IXpsOMPackage1
COM公式ドキュメント
IXpsOMPackage を継承します。
解説(Remarks)
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このパッケージの初期化に使用されたデータのドキュメントの種類を取得します。このメソッドは、ドキュメントが XPS 形式か OpenXPS 形式かを判別するために使用します。詳細については、XPS Documents を参照してください。
| documentType | XPS_DOCUMENT_TYPE* | out | [out, retval] このパッケージの初期化に使用されたソースデータのドキュメントの種類。パッケージがメモリ上で作成された場合は、ドキュメントの種類として XPS_DOCUMENT_TYPE_UNSPECIFIED が返されます。 |
戻り値
このメソッドは HRESULT を返します。戻り値には以下のものが含まれますが、これらに限定されません。この表に記載されていない XPS Document API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
E_POINTER: documentType が NULL です。
解説(Remarks)
IXpsOMPackage1 インスタンスがストリームまたはファイルから読み込まれたものでない場合、ドキュメントの種類は未指定 (XPS_DOCUMENT_TYPE_UNSPECIFIED) となります。それ以外の場合は、IXpsOMPackage1 インスタンスの初期化に使用されたストリームまたはファイルのドキュメントの種類が返されます。
XPS OM を、指定した種類の XPS パッケージとしてファイルに書き込みます。
| fileName | LPWSTR | in | [in, string] 作成するファイルの名前。このパラメーターを NULL にすることはできません。 |
| securityAttributes | SECURITY_ATTRIBUTES* | in | [in, unique] SECURITY_ATTRIBUTES 構造体。この構造体には、異なるものの互いに関連する 2 つのメンバーが含まれます。 lpSecurityDescriptor: 省略可能なセキュリティ記述子 bInheritHandle: 返されたハンドルを子プロセスが継承できるかどうかを決定するブール値 lpSecurityDescriptor が NULL の場合、返されたハンドルに関連付けられるファイルまたはデバイスには既定のセキュリティ記述子が割り当てられます。 securityAttributes パラメーターの詳細については、CreateFile を参照してください。 |
| flagsAndAttributes | DWORD | in | [in] 作成するファイルの設定と属性を指定します。ほとんどのファイルでは、FILE_ATTRIBUTE_NORMAL の値を使用できます。 flagsAndAttributes パラメーターの詳細については、CreateFile を参照してください。 |
| optimizeMarkupSize | BOOL | in | [in] XPS OM の内容を XPS パッケージに書き込む際に、ドキュメントのマークアップをサイズの観点で最適化するかどうかを示すブール値。 TRUE: パッケージライターはマークアップのサイズが最小になるよう最適化を試みます。 FALSE: パッケージライターは最適化を一切行いません。 |
| documentType | XPS_DOCUMENT_TYPE | in | [in] outputStream に書き込む XPS データ形式。このパラメーターに XPS_DOCUMENT_TYPE_UNSPECIFIED を指定することはできません。 |
戻り値
このメソッドは HRESULT を返します。戻り値には以下のものが含まれますが、これらに限定されません。この表に記載されていない XPS Document API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
E_POINTER: documentType が NULL です。
E_INVALIDARG: ドキュメントの種類として XPS_DOCUMENT_TYPE_UNSPECIFIED が指定されました。
XPS_E_INVALID_CONTENT_TYPE: パッケージ内の画像リソースが、documentType で指定されたドキュメントの種類でサポートされていない種類です。
解説(Remarks)
呼び出し元は、パッケージ内のすべての画像リソースがそのパッケージの種類でサポートされていることを確認する必要があります。たとえば、JpegXR 画像は互換性がないため MSXPS のドキュメントの種類では使用できません。
XPS OM を、指定した種類の XPS パッケージとしてストリームに書き込みます。
| outputStream | ISequentialStream* | in | [in] パッケージをシリアル化した内容を受け取るストリーム。このパラメーターを NULL にすることはできません。 |
| optimizeMarkupSize | BOOL | in | [in] XPS OM の内容を XPS パッケージに書き込む際に、ドキュメントのマークアップをサイズの観点で最適化するかどうかを示すブール値。 TRUE: パッケージライターはマークアップのサイズが最小になるよう最適化を試みます。 FALSE: パッケージライターは最適化を一切行いません。 |
| documentType | XPS_DOCUMENT_TYPE | in | [in] outputStream に書き込む XPS データ形式。このパラメーターに XPS_DOCUMENT_TYPE_UNSPECIFIED を指定することはできません。 |
戻り値
このメソッドは HRESULT を返します。戻り値には以下のものが含まれますが、これらに限定されません。この表に記載されていない XPS Document API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
E_POINTER: documentType が NULL です。
E_INVALIDARG: documentType に XPS_DOCUMENT_TYPE_UNSPECIFIED が設定されました。
XPS_E_INVALID_CONTENT_TYPE: パッケージ内の画像リソースが、documentType で指定されたドキュメントの種類でサポートされていない種類です。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXpsOMPackage1 "{95A9435E-12BB-461B-8E7F-C6ADB04CD96A}" #usecom global IXpsOMPackage1 IID_IXpsOMPackage1 "{}" #comfunc global IXpsOMPackage1_GetDocumentType 13 var #comfunc global IXpsOMPackage1_WriteToFile1 14 wstr,var,int,int,int #comfunc global IXpsOMPackage1_WriteToStream1 15 sptr,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IXpsOMPackage1 "{95A9435E-12BB-461B-8E7F-C6ADB04CD96A}" #usecom global IXpsOMPackage1 IID_IXpsOMPackage1 "{}" #comfunc global IXpsOMPackage1_GetDocumentType 13 sptr #comfunc global IXpsOMPackage1_WriteToFile1 14 wstr,sptr,int,int,int #comfunc global IXpsOMPackage1_WriteToStream1 15 sptr,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。