IXpsOMObjectFactory1
COM公式ドキュメント
IXpsOMObjectFactory を継承します。
解説(Remarks)
メソッド 12
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定されたファイルに格納されている XPS ドキュメントの種類を検出します。
| filename | LPWSTR | in | [in] 種類を取得する対象の XPS ファイルの名前。 |
| documentType | XPS_DOCUMENT_TYPE* | out | [out, retval] ドキュメントの種類。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: ドキュメントの種類は XPS_DOCUMENT_TYPE_ XPS または XPS_DOCUMENT_TYPE_ OPENXPS です。
解説(Remarks)
このメソッドは、ドキュメントの種類を検出するのに必要な範囲でのみデータを解析します。コンテンツの検証は行いません。したがって、戻り値が S_OK であっても、そのファイルに有効なドキュメントが含まれていることを意味するわけではありません。
指定されたストリームに格納されている XPS ドキュメントの種類を検出します。
| xpsDocumentStream | IStream* | in | [in] XPS OM データを含むストリーム。ストリームは順次読み取りをサポートしている必要があり、ストリームの読み取り位置は XPS データの先頭に設定されている必要があります。 |
| documentType | XPS_DOCUMENT_TYPE* | out | [out, retval] ストリーム内で見つかった XPS データのドキュメントの種類。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: ドキュメントの種類は XPS_DOCUMENT_TYPE_ XPS または XPS_DOCUMENT_TYPE_ OPENXPS です。
解説(Remarks)
このメソッドは、ドキュメントの種類を検出するのに必要な範囲でのみデータを解析します。コンテンツの検証は行いません。したがって、戻り値が S_OK であっても、そのストリームに有効なドキュメントが含まれていることを意味するわけではありません。
イメージリソースを HD Photo から JpegXR に変換します。
| imageResource | IXpsOMImageResource* | in | [in, out] 変換するイメージリソース。 メソッドから戻ると、変換後のイメージリソースが格納されます。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
XPS_E_INVALID_CONTENT_TYPE: イメージの種類が XPS_IMAGE_TYPE_WDP ではありません。
E_INVALIDARG: イメージリソースが WDP デコーダーで認識されないか、その他の一般的なエラーが発生しました。
解説(Remarks)
imageResource が参照するイメージは、XPS_IMAGE_TYPE_WDP イメージ型から XPS_IMAGE_TYPE_JPEGXR イメージ型に変更されます。このメソッドはイメージリソースのデータストリームを変換しますが、リソースのパート名は変更されません。
イメージリソースを JpegXR から HD Photo に変換します。
| imageResource | IXpsOMImageResource* | in | [in, out] 変換するイメージリソース。 メソッドから戻ると、変換後のイメージリソースが格納されます。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
XPS_E_INVALID_CONTENT_TYPE: イメージの種類が XPS_IMAGE_TYPE_JXR ではありません。
データが WDP デコーダーで認識されない場合、またはその他のエラーが発生した場合は E_INVALIDARG。
解説(Remarks)
imageResource が参照するイメージは、XPS_IMAGE_TYPE_JPEGXR イメージ型から XPS_IMAGE_TYPE_WDP イメージ型に変更されます。このメソッドはイメージリソースのデータストリームを変換しますが、リソースのパート名は変更されません。
XPS OM の内容を指定された種類の XPS パッケージに書き込むためのファイルを開きます。このメソッドは、MSXPS ドキュメントまたは OpenXPS ドキュメントのいずれかに対応するパッケージライターを生成します。
| fileName | LPWSTR | in | [in] 作成するファイルの名前。 | ||||||
| securityAttributes | SECURITY_ATTRIBUTES* | in | [in, unique] SECURITY_ATTRIBUTES 構造体。次の 2 つの独立した、しかし関連するメンバーを含みます。
securityAttributes の詳細については、CreateFile を参照してください。 | ||||||
| flagsAndAttributes | DWORD | in | [in] 作成するファイルの設定と属性を指定します。ほとんどのファイルでは FILE_ATTRIBUTE_NORMAL の値を使用できます。 このパラメーターの詳細については、CreateFile を参照してください。 | ||||||
| optimizeMarkupSize | BOOL | in | [in] XPS OM の内容を XPS パッケージに書き込む際に、ドキュメントのマークアップをサイズの面で最適化するかどうかを示すブール値。
| ||||||
| interleaving | XPS_INTERLEAVING | in | [in] XPS OM の内容をファイルに書き込む際にインターリーブするかどうかを指定します。 | ||||||
| documentSequencePartName | IOpcPartUri* | in | [in] 新しいファイル内のドキュメントシーケンスのパート名を含む IOpcPartUri インターフェース。 | ||||||
| coreProperties | IXpsOMCoreProperties* | in | [in] 新しいファイルに設定するコアドキュメントプロパティを含む IXpsOMCoreProperties インターフェース。このパラメーターには NULL を設定できます。 | ||||||
| packageThumbnail | IXpsOMImageResource* | in | [in] 新しいファイルに割り当てるサムネイル画像を含む IXpsOMImageResource インターフェース。このパラメーターには NULL を設定できます。 | ||||||
| documentSequencePrintTicket | IXpsOMPrintTicketResource* | in | [in] 新しいファイルに割り当てるパッケージレベルのプリントチケットを含む IXpsOMPrintTicketResource インターフェース。このパラメーターには NULL を設定できます。 | ||||||
| discardControlPartName | IOpcPartUri* | in | [in] 破棄制御パートの名前を含む IOpcPartUri インターフェース。このパラメーターには NULL を設定できます。 | ||||||
| documentType | XPS_DOCUMENT_TYPE | in | [in] パッケージライターのドキュメントの種類を指定します。このパラメーターに XPS_DOCUMENT_TYPE_UNSPECIFIED を指定することはできません。 | ||||||
| packageWriter | IXpsOMPackageWriter** | out | [out, retval] このメソッドによって作成された新しい IXpsOMPackageWriter インターフェースへのポインター。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功し、packageWriter が正しく設定されました。
E_INVALIDARG: ドキュメントの種類が有効な XPS ドキュメント形式ではありませんでした。
解説(Remarks)
MSXPS ドキュメントまたは OpenXPS ドキュメントのいずれかに対応するパッケージライターを生成するには、このメソッドを使用します。Windows 7 でリリースされた CreatePackageWriterOnFile は、MSXPS 形式の XPS ドキュメントファイルしか作成できません。
関連情報
関連情報: 従来のメソッドの説明XPS OM の内容を指定された種類の XPS パッケージに書き込むためのストリームを開きます。
| outputStream | ISequentialStream* | in | [in] 書き込みに使用するストリーム。 | ||||||
| optimizeMarkupSize | BOOL | in | ドキュメントをストリームに書き込む際に、ドキュメントのマークアップをサイズの面で最適化するかどうかを示すブール値。
| ||||||
| interleaving | XPS_INTERLEAVING | in | [in] XPS OM の内容をストリームに書き込む際にインターリーブするかどうかを指定します。 | ||||||
| documentSequencePartName | IOpcPartUri* | in | [in] 新しいファイル内のドキュメントシーケンスのパート名を含む IOpcPartUri インターフェース。 | ||||||
| coreProperties | IXpsOMCoreProperties* | in | [in] 新しいファイルに設定するコアドキュメントプロパティを含む IXpsOMCoreProperties インターフェース。このパラメーターには NULL を設定できます。 | ||||||
| packageThumbnail | IXpsOMImageResource* | in | [in] 新しいファイルに割り当てるサムネイル画像を含む IXpsOMImageResource インターフェース。 このパラメーターには NULL を設定できます。 | ||||||
| documentSequencePrintTicket | IXpsOMPrintTicketResource* | in | [in] 新しいファイルに割り当てるパッケージレベルのプリントチケットを含む IXpsOMPrintTicketResource インターフェース。 このパラメーターには NULL を設定できます。 | ||||||
| discardControlPartName | IOpcPartUri* | in | [in] 破棄制御パートの名前を含む IOpcPartUri インターフェース。 このパラメーターには NULL を設定できます。 | ||||||
| documentType | XPS_DOCUMENT_TYPE | in | [in] パッケージライターのドキュメントの種類。このパラメーターに XPS_DOCUMENT_TYPE_UNSPECIFIED を指定することはできません。 | ||||||
| packageWriter | IXpsOMPackageWriter** | out | [out, retval] このメソッドによって作成された新しい IXpsOMPackageWriter インターフェースへのポインター。 |
戻り値
戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功し、packageWriter が正しく設定されました。
E_INVALIDARG: ドキュメントの種類が有効な XPS ドキュメント形式ではありませんでした。
解説(Remarks)
MSXPS ドキュメントまたは OpenXPS ドキュメントのいずれかに対応するパッケージライターを生成するには、このメソッドを使用します。Windows 7 でリリースされた CreatePackageWriterOnStream は、MSXPS 形式の XPS ドキュメントファイルしか作成できません。
IXpsOMObjectFactory1::CreatePackage1 メソッド (xpsobjectmodel_1.h) は、XPS オブジェクトモデルのドキュメントツリーのルートノードとなる IXpsOMPackage1 インターフェースを作成します。
| package | IXpsOMPackage1** | out | 新しい IXpsOMPackage1 インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| S_OK | メソッドは成功しました。 |
| E_POINTER | package が NULL です。 |
XPS パッケージを含むストリームを開き、インスタンス化された XPS ドキュメントオブジェクトツリーを返します。
| stream | IStream* | in | [in] XPS パッケージを含むストリーム。 |
| reuseObjects | BOOL | in | [in] すべてのプロパティと子が同一のオブジェクトを共有することで、ドキュメントオブジェクトツリーの最適化を試みるかどうかを示すブール値。 TRUE: オブジェクトツリーの最適化を試みます。 FALSE: オブジェクトツリーの最適化を試みません。 |
| package | IXpsOMPackage1** | out | [out, retval] 生成された XPS ドキュメントオブジェクトツリーを含む、新しい IXpsOMPackage1 インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
XPS_E_UNEXPECTED_NAMESPACE: パッケージのマークアップが、そのドキュメントの種類ではサポートされない名前空間を使用しています。
XPS_E_ABSOLUTE_REFERENCE: OpenXPS ドキュメントに、ドキュメント内の他のパートを絶対 URI で参照する XML 要素が含まれています。
解説(Remarks)
XPS_DOCUMENT_TYPE_ XPS または XPS_DOCUMENT_TYPE_ OPENXPS のいずれかの種類である可能性のある XPS ドキュメントを含むストリームを読み取るには、このメソッドを使用します。 Windows 7 でリリースされた CreatePackageFromStream は、XPS_DOCUMENT_TYPE_ XPS の種類の XPS ドキュメントを含むストリームしか開くことができません。
XPS パッケージファイルを開き、インスタンス化された XPS ドキュメントオブジェクトツリーを返します。このメソッドは、XPS_DOCUMENT_TYPE_ XPS または XPS_DOCUMENT_TYPE_ OPENXPS の種類の XPS ドキュメントを含むファイルを読み取ります。
| filename | LPWSTR | in | [in, string] XPS パッケージファイルの名前。 |
| reuseObjects | BOOL | in | [in] すべてのプロパティと子が同一のオブジェクトを共有することで、ドキュメントオブジェクトツリーの最適化を試みるかどうかを示すブール値。 TRUE: オブジェクトツリーの最適化を試みます。 FALSE: オブジェクトツリーの最適化を試みません。 |
| package | IXpsOMPackage1** | out | [out, retval] filename から読み取られた XPS ドキュメントオブジェクトツリーを含む、新しい IXpsOMPackage1 インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次のものが含まれますが、これらに限定されません。ここに記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
XPS_E_UNEXPECTED_NAMESPACE: パッケージのマークアップが、そのドキュメントの種類ではサポートされない名前空間を使用しています
XPS_E_ABSOLUTE_REFERENCE: OpenXPS ドキュメントに、ドキュメント内の他のパートを絶対 URI で参照する XML 要素が含まれています。
解説(Remarks)
XPS_DOCUMENT_TYPE_ XPS または XPS_DOCUMENT_TYPE_ OPENXPS のいずれかの種類である可能性のある XPS ドキュメントを含むファイルを読み取るには、このメソッドを使用します。 Windows 7 でリリースされた CreatePackageFromFile は、XPS_DOCUMENT_TYPE_ XPS の種類の XPS ドキュメントを含むファイルしか開くことができません。
IXpsOMObjectFactory1::CreatePage1 メソッド (xpsobjectmodel_1.h) は、1 ページ分の内容を表すオブジェクトツリーのルートノードを提供する IXpsOMPage インターフェースを作成します。
| pageDimensions | XPS_SIZE* | in | 作成するページのサイズを指定する XPS_SIZE 構造体。 サイズは XPS 単位で表されます。1 インチは 96 XPS 単位です。 たとえば、8.5 インチ × 11.0 インチのページの寸法は 816 × 1,056 XPS 単位です。 |
| language | LPWSTR | in | 作成するページの既定の言語を示す文字列。
|
| partUri | IOpcPartUri* | in | このリソースに割り当てるパート名を含む IOpcPartUri インターフェース。 |
| page | IXpsOMPage1** | out | 新しい IXpsOMPage インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
| 戻り値 | 説明 |
|---|---|
| S_OK | メソッドは成功しました。 |
| E_POINTER | pageDimensions、partUri、または page が NULL です。 |
| XPS_E_INVALID_LANGUAGE | language に有効な言語文字列が含まれていません。 |
| XPS_E_INVALID_PAGE_SIZE | pageDimensions に無効なページサイズ、または無効なページサイズの値が含まれています。 |
指定されたストリームからページのマークアップを読み取り、IXpsOMPage1 インターフェースを作成して内容を設定します。
| pageMarkupStream | IStream* | in | [in] ページのマークアップを含むストリーム。 |
| partUri | IOpcPartUri* | in | [in] ページの URI を含む IOpcPartUri インターフェース。 |
| resources | IXpsOMPartResources* | in | [in] ページで使用されるリソースを含む IXpsOMPartResources インターフェース。 |
| reuseObjects | BOOL | in | [in] すべてのプロパティと子が同一のオブジェクトを共有することで、ドキュメントオブジェクトツリーの最適化を試みるかどうかを示すブール値。 TRUE: オブジェクトツリーの最適化を試みます。 FALSE: オブジェクトツリーの最適化を試みません。 |
| page | IXpsOMPage1** | out | [out, retval] このメソッドによって作成された新しい IXpsOMPage1 インターフェースへのポインター。 - |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
XPS_E_INVALID_CONTENT_TYPE: イメージリソースの種類が、ページのマークアップで使用されている名前空間と一致しません。たとえば、resources コレクション内の要素の 1 つが JpegXR であるにもかかわらず、名前空間が MSXPS 仕様に従っている場合などです。
E_POINTER: pageMarkupStream、partUri、resources、または page が NULL です。
XPS_E_NO_CUSTOM_OBJECTS: resource が、認識されるインターフェース実装を指していません。XPS ドキュメント API のインターフェースを独自に実装することはサポートされていません。
解説(Remarks)
このメソッドが返す IXpsOMPage1 インターフェースは GetDocumentType メソッドを提供しており、これを使用してストリーム内のソース XML マークアップの XPS ドキュメントの種類を識別できます。XPS ドキュメントの種類の判定は、ソースマークアップで使用されている XML 名前空間に基づいて行われます。
XPS_DOCUMENT_TYPE_ OPENXPS のドキュメントの種類を持つ IXpsOMPage1 インターフェースは、そのすべてのイメージリソースが XPS_DOCUMENT_TYPE_ XPS のドキュメント形式と互換性がある場合、XPS_DOCUMENT_TYPE_ XPS のドキュメントの種類としてシリアル化できます。
リモートリソースディクショナリのマークアップを、ルートに接続されていない IXpsOMRemoteDictionaryResource インターフェースに読み込みます。dictionaryMarkupStream パラメーターで参照されるディクショナリには、OpenXPS または MSXPS のいずれかの名前空間のマークアップを含めることができます。
| dictionaryMarkupStream | IStream* | in | [in] リモートリソースディクショナリのマークアップを含む IStream インターフェース。 |
| partUri | IOpcPartUri* | in | [in] このリソースに割り当てるパート名を含む IOpcPartUri インターフェース。 |
| resources | IXpsOMPartResources* | in | ストリームを持つディクショナリリソースオブジェクトのパートリソースを表す IXpsOMPartResources インターフェース。 |
| dictionaryResource | IXpsOMRemoteDictionaryResource** | out | [in] 新しい IXpsOMRemoteDictionaryResource インターフェースへのポインター。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表に示すものが含まれますが、これらに限定されません。この表に記載されていない XPS ドキュメント API の戻り値については、XPS Document Errors を参照してください。
S_OK: メソッドは成功しました。
XPS_E_INVALID_CONTENT_TYPE: イメージリソースの種類が、マークアップで使用されている名前空間と一致しません。たとえば、resources 内の要素の 1 つが JpegXR であるにもかかわらず、名前空間が MSXPS 仕様に従っている場合などです。
E_POINTER: dictionaryMarkupStream、dictionaryPartUri、resources、または dictionaryResource が NULL です。
XPS_E_NO_CUSTOM_OBJECTS: resource が、認識されるインターフェース実装を指していません。XPS ドキュメント API のインターフェースを独自に実装することはサポートされていません。
解説(Remarks)
内容が XPS_DOCUMENT_TYPE_ XPS または XPS_DOCUMENT_TYPE_ OPENXPS のいずれかの種類である可能性のあるストリームからリモートディクショナリを作成するには、このメソッドを使用します。 Windows 7 でリリースされた CreateRemoteDictionaryResourceFromStream は、XPS_DOCUMENT_TYPE_ XPS の種類のストリームしか読み取ることができません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXpsOMObjectFactory1 "{0A91B617-D612-4181-BF7C-BE5824E9CC8F}" #usecom global IXpsOMObjectFactory1 IID_IXpsOMObjectFactory1 "{E974D26D-3D9B-4D47-88CC-3872F2DC3585}" #comfunc global IXpsOMObjectFactory1_GetDocumentTypeFromFile 40 wstr,var #comfunc global IXpsOMObjectFactory1_GetDocumentTypeFromStream 41 sptr,var #comfunc global IXpsOMObjectFactory1_ConvertHDPhotoToJpegXR 42 sptr #comfunc global IXpsOMObjectFactory1_ConvertJpegXRToHDPhoto 43 sptr #comfunc global IXpsOMObjectFactory1_CreatePackageWriterOnFile1 44 wstr,var,int,int,int,sptr,sptr,sptr,sptr,sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePackageWriterOnStream1 45 sptr,int,int,sptr,sptr,sptr,sptr,sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePackage1 46 sptr #comfunc global IXpsOMObjectFactory1_CreatePackageFromStream1 47 sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePackageFromFile1 48 wstr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePage1 49 var,wstr,sptr,sptr #comfunc global IXpsOMObjectFactory1_CreatePageFromStream1 50 sptr,sptr,sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreateRemoteDictionaryResourceFromStream1 51 sptr,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IXpsOMObjectFactory1 "{0A91B617-D612-4181-BF7C-BE5824E9CC8F}" #usecom global IXpsOMObjectFactory1 IID_IXpsOMObjectFactory1 "{E974D26D-3D9B-4D47-88CC-3872F2DC3585}" #comfunc global IXpsOMObjectFactory1_GetDocumentTypeFromFile 40 wstr,sptr #comfunc global IXpsOMObjectFactory1_GetDocumentTypeFromStream 41 sptr,sptr #comfunc global IXpsOMObjectFactory1_ConvertHDPhotoToJpegXR 42 sptr #comfunc global IXpsOMObjectFactory1_ConvertJpegXRToHDPhoto 43 sptr #comfunc global IXpsOMObjectFactory1_CreatePackageWriterOnFile1 44 wstr,sptr,int,int,int,sptr,sptr,sptr,sptr,sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePackageWriterOnStream1 45 sptr,int,int,sptr,sptr,sptr,sptr,sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePackage1 46 sptr #comfunc global IXpsOMObjectFactory1_CreatePackageFromStream1 47 sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePackageFromFile1 48 wstr,int,sptr #comfunc global IXpsOMObjectFactory1_CreatePage1 49 sptr,wstr,sptr,sptr #comfunc global IXpsOMObjectFactory1_CreatePageFromStream1 50 sptr,sptr,sptr,int,sptr #comfunc global IXpsOMObjectFactory1_CreateRemoteDictionaryResourceFromStream1 51 sptr,sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。