Win32 API 日本語リファレンス
ホームStorage.Xps › IXpsOMObjectFactory

IXpsOMObjectFactory

COM
IIDf9b2a685-a50d-4fc2-b764-b56e093ea0ca継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

XPS ドキュメント オブジェクト モデルのオブジェクトを作成します。

メソッド 37

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreatePackage(IXpsOMPackage** package)

XPS オブジェクト モデルのドキュメント ツリーのルート ノードとなる IXpsOMPackage インターフェイスを作成します。

packageIXpsOMPackage**out新しい IXpsOMPackage インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
packageNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMPackage    *newInterface;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
      __uuidof(XpsOMObjectFactory),
      NULL, 
      CLSCTX_INPROC_SERVER,
      __uuidof(IXpsOMObjectFactory),
      reinterpret_cast<LPVOID*>(&xpsFactory)
      );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreatePackage (&newInterface);
    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }

    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}

プログラムで IXpsOMPackage インターフェイスを使用する方法については、空の XPS OM の作成を参照してください。

vtbl 4 HRESULT CreatePackageFromFile(LPWSTR filename, BOOL reuseObjects, IXpsOMPackage** package)

XPS パッケージ ファイルを開き、インスタンス化された XPS ドキュメント オブジェクト ツリーを返します。

filenameLPWSTRinXPS パッケージ ファイルの名前です。
reuseObjectsBOOLin

すべてのプロパティと子が同一のオブジェクトを共有することで、ドキュメント オブジェクト ツリーの最適化を試みるかどうかを示すブール値です。

意味
TRUE
オブジェクト ツリーの最適化を試みます。
FALSE
オブジェクト ツリーの最適化を試みません。
packageIXpsOMPackage**out生成された XPS ドキュメント オブジェクト ツリーを含む、新しい IXpsOMPackage インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
filename または packageNULL です。
 

このメソッドは Packaging API を呼び出します。Packaging API の戻り値については、パッケージ化エラーを参照してください。

解説(Remarks)

このメソッドは、ストリームから XPS OM のオブジェクトに読み込むストリームベースのリソースの内容を検証しません。これらのリソースは、使用する前にアプリケーション側で検証する必要があります。

このメソッドはドキュメントのページを逆シリアル化しません。XPS パッケージをページ参照パートまでしか逆シリアル化しません。実際のページは、必要に応じて IXpsOMPageReference::GetPage メソッドを呼び出して逆シリアル化できます。GetPage の呼び出し時点ではページが逆シリアル化されていないため、このメソッドは S_OK を返すこともあれば、XPS パッケージ内の問題のあるページを読み込もうとした場合にエラーを返すこともあります。

XPS パッケージを XPS OM に読み込んだ直後に XPS OM を書き出すと、元のコンテンツの一部が失われたり変更されたりする場合があります。

そのような場合に発生し得る変更の一部を次の表に示します。

ドキュメントの機能 動作
デジタル署名 ドキュメントから削除されます
DiscardControl パート ドキュメントから削除されます
外部のドキュメント パート ドキュメントから削除されます
FixedPage マークアップ 元の内容から変更されます
リソース ディクショナリのマークアップ 最適化フラグが設定されている場合、元の内容から変更されます
 

プログラムで IXpsOMPackage インターフェイスを使用する方法については、空の XPS OM の作成を参照してください。

vtbl 5 HRESULT CreatePackageFromStream(IStream* stream, BOOL reuseObjects, IXpsOMPackage** package)

XPS パッケージを含むストリームを開き、インスタンス化された XPS ドキュメント オブジェクト ツリーを返します。

streamIStream*inXPS パッケージを含むストリームです。
reuseObjectsBOOLin

すべてのプロパティと子が同一のオブジェクトを共有することで、ドキュメント オブジェクト ツリーの最適化を試みるかどうかを示すブール値です。

意味
TRUE
オブジェクト ツリーの最適化を試みます。
FALSE
オブジェクト ツリーの最適化を試みません。
packageIXpsOMPackage**out生成された XPS ドキュメント オブジェクト ツリーを含む、新しい IXpsOMPackage インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
stream または packageNULL です。
 

このメソッドは Packaging API を呼び出します。Packaging API の戻り値については、パッケージ化エラーを参照してください。

解説(Remarks)

このメソッドは、ストリームから XPS OM のオブジェクトに読み込むストリームベースのリソースの内容を検証しません。これらのリソースは、使用する前にアプリケーション側で検証する必要があります。

このメソッドはドキュメントのページを逆シリアル化しません。XPS パッケージをページ参照パートまでしか逆シリアル化しません。実際のページは、必要に応じて IXpsOMPageReference::GetPage メソッドを呼び出して逆シリアル化できます。GetPage の呼び出し時点ではページが逆シリアル化されていないため、このメソッドは S_OK を返すこともあれば、XPS パッケージ内の問題のあるページを読み込もうとした場合にエラーを返すこともあります。

XPS パッケージを XPS OM に読み込んだ直後に XPS OM を書き出すと、元のコンテンツの一部が失われたり変更されたりする場合があります。

そのような場合に発生し得る変更の一部を次の表に示します。

ドキュメントの機能 動作
デジタル署名 ドキュメントから削除されます
DiscardControl パート ドキュメントから削除されます
外部のドキュメント パート ドキュメントから削除されます
FixedPage マークアップ 元の内容から変更されます
リソース ディクショナリのマークアップ 最適化フラグが設定されている場合、元の内容から変更されます
 

プログラムで IXpsOMPackage インターフェイスを使用する方法については、空の XPS OM の作成を参照してください。

vtbl 6 HRESULT CreateStoryFragmentsResource(IStream* acquiredStream, IOpcPartUri* partUri, IXpsOMStoryFragmentsResource** storyFragmentsResource)

ページの StoryFragments パートのリソース ストリームの内容にアクセスできる IXpsOMStoryFragmentsResource インターフェイスを作成します。

acquiredStreamIStream*in

この StoryFragments リソースに関連付ける読み取り専用の IStream インターフェイスです。

重要 このストリームはシングルスレッド アパートメント (STA) オブジェクトとして扱ってください。再入しないでください。
 
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。
storyFragmentsResourceIXpsOMStoryFragmentsResource**out新しい IXpsOMStoryFragmentsResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
acquiredStreampartUri、または storyFragmentsResourceNULL です。

解説(Remarks)

ページの StoryFragments パートには、単一の固定ページに関連付けられた 1 つ以上のストーリーの一部分について、その構造を記述する XML マークアップが含まれます。StoryFragments パートの XML マークアップが記述するドキュメントの内容には、そのページに存在するストーリーの表や段落などがあります。

DocumentStructure パートおよび StoryFragments パートの XML マークアップについては、XML Paper Specification で説明されています。

vtbl 7 HRESULT CreateDocumentStructureResource(IStream* acquiredStream, IOpcPartUri* partUri, IXpsOMDocumentStructureResource** documentStructureResource)

ドキュメント構造リソース ストリームにアクセスできる IXpsOMDocumentStructureResource インターフェイスを作成します。

acquiredStreamIStream*in

このリソースに関連付ける読み取り専用の IStream インターフェイスです。このパラメーターを NULL にすることはできません。

重要 このストリームはシングルスレッド アパートメント (STA) オブジェクトとして扱ってください。再入しないでください。
 
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。このパラメーターを NULL にすることはできません。
documentStructureResourceIXpsOMDocumentStructureResource**out新しい IXpsOMDocumentStructureResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
acquiredStreampartUri、または documentStructureResourceNULL です。

解説(Remarks)

XPS ドキュメントの DocumentStructure パートにはドキュメントのアウトラインが含まれ、このアウトラインは StoryFragments パートとともに、ドキュメントの固定ページに出現するすべての要素の読み取り順序を定義します。このインターフェイスを使用すると、プログラムから DocumentStructure パートの XML 内容を読み取り、また置き換えることができます。

DocumentStructure パートには、ドキュメントのフレームワークと、ドキュメント全体の読み取り順序を記述するアウトラインが含まれます。読み取り順序は、ストーリーと呼ばれる意味的なブロックに整理されます。ストーリーは、雑誌における記事と同じように、ドキュメントの論理的な単位です。ストーリーは 1 つ以上の StoryFragments パートで構成されます。

StoryFragments パートには、ストーリーの内容を構成する段落や表など、ストーリーの意味的なブロックを定義するコンテンツ構造マークアップが含まれます。

DocumentStructure パートおよび StoryFragments パートの内容については、XML Paper Specification で説明されています。

vtbl 8 HRESULT CreateSignatureBlockResource(IStream* acquiredStream, IOpcPartUri* partUri, IXpsOMSignatureBlockResource** signatureBlockResource)

1 つ以上の署名要求を格納できる IXpsOMSignatureBlockResource を作成します。

acquiredStreamIStream*inこのリソースに関連付ける読み取り専用のストリームです。
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスへのポインターです。
signatureBlockResourceIXpsOMSignatureBlockResource**outこのメソッドで作成された新しい IXpsOMSignatureBlockResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
acquiredStreampartUri、または signatureBlockResourceNULL です。
vtbl 9 HRESULT CreateRemoteDictionaryResource(IXpsOMDictionary* dictionary, IOpcPartUri* partUri, IXpsOMRemoteDictionaryResource** remoteDictionaryResource)

プロパティ リソースの共有を可能にする IXpsOMRemoteDictionaryResource インターフェイスを作成します。

dictionaryIXpsOMDictionary*inこのリソースに関連付けるディクショナリの IXpsOMDictionary インターフェイス ポインターです。
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。
remoteDictionaryResourceIXpsOMRemoteDictionaryResource**out新しい IXpsOMRemoteDictionaryResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
dictionarypartUri、または remoteDictionaryResourceNULL です。
XPS_E_NO_CUSTOM_OBJECTS
dictionary が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。
vtbl 10 HRESULT CreateRemoteDictionaryResourceFromStream(IStream* dictionaryMarkupStream, IOpcPartUri* dictionaryPartUri, IXpsOMPartResources* resources, IXpsOMRemoteDictionaryResource** dictionaryResource)

リモート リソース ディクショナリのマークアップを、ルートに接続されていない IXpsOMRemoteDictionaryResource インターフェイスに読み込みます。

dictionaryMarkupStreamIStream*inリモート リソース ディクショナリのマークアップを含む IStream インターフェイスです。
dictionaryPartUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。
resourcesIXpsOMPartResources*inストリームを持つディクショナリ リソース オブジェクトのパート リソースを表す IXpsOMPartResources インターフェイスです。
dictionaryResourceIXpsOMRemoteDictionaryResource**out新しい IXpsOMRemoteDictionaryResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
dictionaryMarkupStreamdictionaryPartUriresources、または dictionaryResourceNULL です。
XPS_E_NO_CUSTOM_OBJECTS
resources が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。
vtbl 11 HRESULT CreatePartResources(IXpsOMPartResources** partResources)

パートベースのリソースを格納できる IXpsOMPartResources インターフェイスを作成します。

partResourcesIXpsOMPartResources**out新しい IXpsOMPartResources インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
partResourcesNULL です。

解説(Remarks)

パート リソースはドキュメントのページ間で共有され、フォント、イメージ、カラー プロファイル、リモート ディクショナリなどを含めることができます。

ドキュメントのパート リソースを取得するには、IXpsOMPageReference::CollectPartResources を呼び出します。

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMPartResources    *newInterface;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreatePartResources (&newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 12 HRESULT CreateDocumentSequence(IOpcPartUri* partUri, IXpsOMDocumentSequence** documentSequence)

XPS ドキュメントの IXpsOMDocument インターフェイスを格納できる IXpsOMDocumentSequence インターフェイスを作成します。

partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスへのポインターです。このパラメーターを NULL にすることはできません。
documentSequenceIXpsOMDocumentSequence**out新しい IXpsOMDocumentSequence インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
partUri または documentSequenceNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMDocumentSequence    *newInterface;
IOpcPartUri               *partUri;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreatePartUri(partUriString, &partUri);
    
    if (SUCCEEDED(hr))
    {
        hr = xpsFactory->CreateDocumentSequence (partUri, &newInterface);

        if (SUCCEEDED(hr))
        {
            // use newInterface

            newInterface->Release();
        }
        partUri->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 13 HRESULT CreateDocument(IOpcPartUri* partUri, IXpsOMDocument** document)

順序付けられたシーケンスとして一連の IXpsOMPageReference インターフェイスを格納できる IXpsOMDocument インターフェイスを作成します。

partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。このパラメーターを NULL にすることはできません。
documentIXpsOMDocument**out新しい IXpsOMDocument インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
partUri または documentNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMDocument    *newInterface;
IOpcPartUri       *partUri;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreatePartUri(partUriString, &partUri);
    
    if (SUCCEEDED(hr))
    {
        hr = xpsFactory->CreateDocument (partUri, &newInterface);
        
        if (SUCCEEDED(hr))
        {
            // use newInterface

            newInterface->Release();
        }
        partUri->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 14 HRESULT CreatePageReference(XPS_SIZE* advisoryPageDimensions, IXpsOMPageReference** pageReference)

ページの仮想化を可能にする IXpsOMPageReference インターフェイスを作成します。

advisoryPageDimensionsXPS_SIZE*in

推奨ページ サイズ (ページの幅とページの高さ) を設定する XPS_SIZE 構造体です。

サイズは XPS 単位で表されます。1 インチは 96 XPS 単位です。たとえば、8.5" × 11.0" のページのサイズは 816 × 1,056 XPS 単位になります。

pageReferenceIXpsOMPageReference**out新しい IXpsOMPageReference インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
advisoryPageDimensions または pageReferenceNULL です。
XPS_E_INVALID_PAGE_SIZE
advisoryPageDimensions に無効なページ サイズ、または無効なページ サイズの値が含まれています。

解説(Remarks)

ページ参照を使用すると、ページの完全なオブジェクト モデルの読み込みを、明示的に要求されるまで遅延させることができます。ページが変更されていない場合は、要求に応じてアンロードできます。

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMPageReference    *newInterface;
// The following value is defined outside of 
// this example.
XPS_SIZE        advisoryPageDimensions;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreatePageReference (
        &advisoryPageDimensions,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 15 HRESULT CreatePage(XPS_SIZE* pageDimensions, LPWSTR language, IOpcPartUri* partUri, IXpsOMPage** page)

1 ページ分の内容を表すオブジェクト ツリーのルート ノードを提供する IXpsOMPage インターフェイスを作成します。

pageDimensionsXPS_SIZE*in

作成するページのサイズを指定する XPS_SIZE 構造体です。

サイズは XPS 単位で表されます。1 インチは 96 XPS 単位です。たとえば、8.5" × 11.0" のページのサイズは 816 × 1,056 XPS 単位になります。

languageLPWSTRin

作成するページの既定の言語を示す文字列です。

重要 言語文字列は RFC 3066 の構文に従う必要があります。
 
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。
pageIXpsOMPage**out新しい IXpsOMPage インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
pageDimensionspartUri、または pageNULL です。
XPS_E_INVALID_LANGUAGE
language に有効な言語文字列が含まれていません。
XPS_E_INVALID_PAGE_SIZE
pageDimensions に無効なページ サイズ、または無効なページ サイズの値が含まれています。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMPage        *newInterface;
// The following values are defined outside of 
// this example.
//  LPWSTR        language;
//  XPS_SIZE      pageDimensions;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreatePartUri(partUriString, &partUri);
    if (SUCCEEDED(hr))
    {
        hr = xpsFactory->CreatePage (
            &pageDimensions,
            language,
            partUri,
            &newInterface);

        if (SUCCEEDED(hr))
        {
            // use newInterface

            newInterface->Release();
        }
        partUri->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 16 HRESULT CreatePageFromStream(IStream* pageMarkupStream, IOpcPartUri* partUri, IXpsOMPartResources* resources, BOOL reuseObjects, IXpsOMPage** page)

指定されたストリームからページ マークアップを読み取り、IXpsOMPage インターフェイスを作成して内容を設定します。

pageMarkupStreamIStream*inページ マークアップを含むストリームです。
partUriIOpcPartUri*inページの URI を含む IOpcPartUri インターフェイスです。
resourcesIXpsOMPartResources*inページで使用されるリソースを含む IXpsOMPartResources インターフェイスです。
reuseObjectsBOOLin

すべてのプロパティと子が同一のオブジェクトを共有することで、ページ コンテンツ ツリーの最適化を試みるかどうかを指定するブール値です。

意味
TRUE
オブジェクト ツリーの最適化を試みます。
FALSE
オブジェクト ツリーの最適化を試みません。
pageIXpsOMPage**outこのメソッドで作成された新しい IXpsOMPage インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
pageMarkupStreampartUriresources、または pageNULL です。
XPS_E_NO_CUSTOM_OBJECTS
resources が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。
 

このメソッドは Packaging API を呼び出します。Packaging API の戻り値については、パッケージ化エラーを参照してください。

解説(Remarks)

このメソッドは、ストリームからドキュメント オブジェクトに読み込むストリームベースのリソースの内容を検証しません。これらのリソースは、使用する前にアプリケーション側で検証する必要があります。

vtbl 17 HRESULT CreateCanvas(IXpsOMCanvas** canvas)

ページ要素をグループ化するために使用する IXpsOMCanvas インターフェイスを作成します。

canvasIXpsOMCanvas**out新しい IXpsOMCanvas インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
canvasNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMCanvas    *newInterface;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateCanvas (&newInterface);
    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 18 HRESULT CreateGlyphs(IXpsOMFontResource* fontResource, IXpsOMGlyphs** glyphs)

ページに表示されるテキストを指定する IXpsOMGlyphs インターフェイスを作成します。

fontResourceIXpsOMFontResource*in使用するフォント リソースの IXpsOMFontResource インターフェイスへのポインターです。
glyphsIXpsOMGlyphs**out新しい IXpsOMGlyphs インターフェイス ポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
fontResource または glyphsNULL です。
XPS_E_NO_CUSTOM_OBJECTS
fontResource が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMGlyphs       *newInterface;
// this interface is defined outside of this example
//  IXpsOMFontResource *font; 

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateGlyphs (font, &newInterface);
    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 19 HRESULT CreatePath(IXpsOMPath** path)

ページ上のグラフィック パス要素を指定する IXpsOMPath インターフェイスを作成します。

pathIXpsOMPath**out新しい IXpsOMPath インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
pathNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMPath    *newInterface;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreatePath (&newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 20 HRESULT CreateGeometry(IXpsOMGeometry** geometry)

パスまたはクリッピング領域の形状を指定する IXpsOMGeometry インターフェイスを作成します。

geometryIXpsOMGeometry**out新しい IXpsOMGeometry インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
geometryNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMGeometry    *newInterface;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateGeometry (&newInterface);
    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 21 HRESULT CreateGeometryFigure(XPS_POINT* startPoint, IXpsOMGeometryFigure** figure)

IXpsOMGeometry インターフェイスで定義されるオブジェクトの一部分を指定する IXpsOMGeometryFigure インターフェイスを作成します。

startPointXPS_POINT*inジオメトリ フィギュアの開始点の座標です。
figureIXpsOMGeometryFigure**out新しい IXpsOMGeometryFigure インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
startPoint または figureNULL です。
XPS_E_INVALID_FLOAT
startPoint で渡された XPS_POINT 構造体のいずれかのフィールドに、無効な値が含まれています。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMGeometryFigure    *newInterface;
// startPoint contains the starting point
// of the geometry figure being created
XPS_POINT                startPoint = {0,0};

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateGeometryFigure (&startPoint, &newInterface);
    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 22 HRESULT CreateMatrixTransform(XPS_MATRIX* matrix, IXpsOMMatrixTransform** transform)

アフィン行列変換を指定する IXpsOMMatrixTransform インターフェイスを作成します。

matrixXPS_MATRIX*in変換に割り当てる初期行列です。
transformIXpsOMMatrixTransform**out新しい IXpsOMMatrixTransform インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
matrix または transformNULL です。

解説(Remarks)

この行列で指定される変換は、他の XPS オブジェクトの変換プロパティに適用できます。

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMMatrixTransform    *newInterface;
// The following value is defined outside of 
// this example.
XPS_MATRIX        newMatrix;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateMatrixTransform (
        &newMatrix,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 23 HRESULT CreateSolidColorBrush(XPS_COLOR* color, IXpsOMColorProfileResource* colorProfile, IXpsOMSolidColorBrush** solidColorBrush)

単一の単色によるブラシを指定する IXpsOMSolidColorBrush インターフェイスを作成します。

colorXPS_COLOR*inブラシの色を指定する XPS_COLOR 構造体です。
colorProfileIXpsOMColorProfileResource*inIXpsOMColorProfileResource インターフェイスです。カラーの種類が XPS_COLOR_TYPE_CONTEXT でない限り、この値は NULL である必要があります。
solidColorBrushIXpsOMSolidColorBrush**out新しい IXpsOMSolidColorBrush インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
color または solidColorBrushNULL です。
XPS_E_MISSING_COLORPROFILE
カラー プロファイルが必要であるにもかかわらず、colorProfileNULL です。カラーの種類が XPS_COLOR_TYPE_CONTEXT の場合、カラー プロファイルが必要です。
XPS_E_NO_CUSTOM_OBJECTS
colorProfile が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。
XPS_E_UNEXPECTED_COLORPROFILE
カラー プロファイルが不要であるにもかかわらず、colorProfile にカラー プロファイルが含まれています。カラー プロファイルが必要となるのは、カラーの種類が XPS_COLOR_TYPE_CONTEXT の場合のみです。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMSolidColorBrush             *newInterface;
// The following values are defined outside of 
// this example.
//  XPS_COLOR                     color;
//  IXpsOMColorProfileResource    *colorProfile;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateSolidColorBrush (
        &color,
        colorProfile,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 24 HRESULT CreateColorProfileResource(IStream* acquiredStream, IOpcPartUri* partUri, IXpsOMColorProfileResource** colorProfileResource)

カラー プロファイル リソース ストリームにアクセスするために使用する IXpsOMColorProfileResource インターフェイスを作成します。

acquiredStreamIStream*in

このリソースに関連付ける読み取り専用の IStream インターフェイスです。このパラメーターを NULL にすることはできません。

重要 このストリームはシングルスレッド アパートメント (STA) オブジェクトとして扱ってください。再入しないでください。
 
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。
colorProfileResourceIXpsOMColorProfileResource**out新しい IXpsOMColorProfileResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
acquiredStreampartUri、または colorProfileResourceNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMColorProfileResource    *newInterface;
IOpcPartUri                   *partUri;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    // The partUriString and acquiredStream variables 
    //   are defined outside of this example.
    hr = xpsFactory->CreatePartUri(
        partUriString, 
        &partUri);
    if (SUCCEEDED(hr))
    {
        hr = xpsFactory->CreateColorProfileResource (
            acquiredStream, 
            partUri,
            &newInterface);
        if (SUCCEEDED(hr))
        {
            // use newInterface

            newInterface->Release();
        }
        partUri->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 25 HRESULT CreateImageBrush(IXpsOMImageResource* image, XPS_RECT* viewBox, XPS_RECT* viewPort, IXpsOMImageBrush** imageBrush)

IXpsOMImageBrush インターフェイスを作成します。

imageIXpsOMImageResource*inブラシのソース イメージとして使用するイメージを含む IXpsOMImageResource インターフェイスです。
viewBoxXPS_RECT*inブラシが使用するソース イメージの領域である viewbox を定義する XPS_RECT 構造体です。
viewPortXPS_RECT*in出力領域内で最初のタイルが占める領域である viewport を定義する XPS_RECT 構造体です。
imageBrushIXpsOMImageBrush**out新しい IXpsOMImageBrush インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
imageviewBoxviewPort、または imageBrushNULL です。
E_INVALIDARG
viewBox または viewPort に無効な四角形または値が含まれています。

解説(Remarks)

ブラシのビューボックスは、タイル イメージとして使用するソース イメージまたはビジュアルの範囲を指定します。

ブラシのビューボックスの座標はソース コンテンツを基準としており、(0,0) はソース コンテンツの左上隅を表します。イメージの場合、ブラシのビューボックスで指定するサイズは 1/96" 単位で表されます。ソース イメージ内の対応するピクセル座標は、次のように計算されます。

次の図では、左側のイメージがソース イメージの例であり、右端がビューボックスを選択した結果得られるブラシです。

An illustration that shows a viewbox exampleソース イメージの解像度が 96 × 96 dpi で、イメージのサイズが 96 × 96 ピクセルの場合、viewbox パラメーターの各フィールドの値は次のようになります。

上記のパラメーター値は、ソース イメージ上の次の位置に対応します。

SourceLeft = (96 × 48) / 96 = 左端から 48 ピクセル
SourceTop = (96 × 24) / 96 = 上端から 24 ピクセル
SourceWidth = (96 × 24) / 96 = 幅 24 ピクセル
SourceHeight = (96 × 48) / 96 = 高さ 48 ピクセル

イメージ ブラシは、イメージまたはその一部を取り込み、それを変換してタイルを作成し、生成されたタイルをビューポート (出力領域におけるタイルの配置先ジオメトリ) に配置して、タイル モードに従って出力領域を塗りつぶすタイル ブラシです。

viewport は、出力領域内で最初のタイルが占める領域です。ビューポートのイメージは、タイル モードに従って出力領域全体に繰り返し描画されます。

次の図は、イメージ ブラシを使用して出力領域を塗りつぶす方法を示しています。左から右へ、元のイメージがビューポートを埋めるように変換され、出力領域のビューポート領域に配置され、さらにタイル状に並べられて出力領域を塗りつぶします。

A figure that shows how a tile brush fills a geometry次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMImageBrush            *newInterface;
// The following values are defined outside of 
// this example.
//  IXpsOMImageResource     *image;
//  XPS_RECT                viewBox;
//  XPS_RECT                viewPort;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateImageBrush (
        image,
        &viewBox,
        &viewPort,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 26 HRESULT CreateVisualBrush(XPS_RECT* viewBox, XPS_RECT* viewPort, IXpsOMVisualBrush** visualBrush)

ビジュアル オブジェクトを使用する IXpsOMTileBrush である IXpsOMVisualBrush インターフェイスを作成します。

viewBoxXPS_RECT*inブラシで使用するソース イメージの領域を指定する XPS_RECT 構造体です。このパラメーターを NULL にすることはできません。
viewPortXPS_RECT*inタイルの配置先ジオメトリ領域を指定する XPS_RECT 構造体です。このパラメーターを NULL にすることはできません。
visualBrushIXpsOMVisualBrush**out新しい IXpsOMVisualBrush インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
viewBoxviewPort、または visualBrushNULL です。
E_INVALIDARG
viewBox または viewPort に無効な四角形または値が含まれています。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMVisualBrush        *newInterface;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateVisualBrush (
        &viewBox,
        &viewPort,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // assign visual using one of the following:
        newInterface->SetVisualLocal (localVisual);
        // or
        newInterface->SetVisualLookup (visualLookupKey);
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
// use newInterface

newInterface->Release();
xpsFactory->Release();

vtbl 27 HRESULT CreateImageResource(IStream* acquiredStream, XPS_IMAGE_TYPE contentType, IOpcPartUri* partUri, IXpsOMImageResource** imageResource)

イメージ リソース ストリームにアクセスするために使用する IXpsOMImageResource インターフェイスを作成します。

acquiredStreamIStream*in

このリソースに関連付ける読み取り専用のストリームです。このパラメーターを NULL にすることはできません。

重要 このストリームはシングルスレッド アパートメント (STA) オブジェクトとして扱ってください。再入しないでください。
 
contentTypeXPS_IMAGE_TYPEinacquiredStream が参照するストリームのイメージの種類を示す XPS_IMAGE_TYPE 値です。
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。このパラメーターを NULL にすることはできません。
imageResourceIXpsOMImageResource**out新しい IXpsOMImageResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
contentType が有効な XPS_IMAGE_TYPE 値ではありませんでした。
E_POINTER
acquiredStreampartUri、または imageResourceNULL です。

解説(Remarks)

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMImageResource    *newInterface;
// The following values are defined outside of 
// this example.
//  IStream            *acquiredStream;
//  XPS_IMAGE_TYPE     contentType;
//  IOpcPartUri        *partUri;
    
// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    // The partUriString and acquiredStream variables 
    //   are defined outside of this example.
    hr = xpsFactory->CreatePartUri(partUriString, &partUri);
    if (SUCCEEDED(hr))
    {
        hr = xpsFactory->CreateImageResource (
            acquiredStream,
            contentType,
            partUri,
            &newInterface);
        if (SUCCEEDED(hr))
        {
            // use newInterface

            newInterface->Release();
        }
        partUri->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 28 HRESULT CreatePrintTicketResource(IStream* acquiredStream, IOpcPartUri* partUri, IXpsOMPrintTicketResource** printTicketResource)

PrintTicket ストリームにアクセスできる IXpsOMPrintTicketResource インターフェイスを作成します。

acquiredStreamIStream*in

読み取り専用の PrintTicket リソース ストリームです。

重要 このストリームはシングルスレッド アパートメント (STA) オブジェクトとして扱ってください。再入しないでください。
 
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。
printTicketResourceIXpsOMPrintTicketResource**out新しい IXpsOMPrintTicketResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
acquiredStreampartUri、または printTicketResourceNULL です。
vtbl 29 HRESULT CreateFontResource(IStream* acquiredStream, XPS_FONT_EMBEDDING fontEmbedding, IOpcPartUri* partUri, BOOL isObfSourceStream, IXpsOMFontResource** fontResource)

フォント リソースへの IStream インターフェイスを提供する IXpsOMFontResource インターフェイスを作成します。

acquiredStreamIStream*in

このフォント リソースに関連付ける読み取り専用の IStream インターフェイスです。このパラメーターを NULL にすることはできません。

重要 このストリームはシングルスレッド アパートメント (STA) オブジェクトとして扱ってください。再入しないでください。
 
注意 このストリームは難読化しないでください。
 
fontEmbeddingXPS_FONT_EMBEDDINGinストリームの埋め込みオプションを指定する XPS_FONT_EMBEDDING 値です。
partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。このパラメーターを NULL にすることはできません。
isObfSourceStreamBOOLin

acquiredStream が参照するストリームが難読化されているかどうかを示すブール値です。

意味
TRUE
acquiredStream が参照するストリームは難読化されています。
FALSE
acquiredStream が参照するストリームは難読化されていません。
fontResourceIXpsOMFontResource**out新しい IXpsOMFontResource インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
次のいずれかのエラーが発生しました。
E_POINTER
acquiredStreampartUri、または fontResourceNULL です。

解説(Remarks)

isObfSourceStream の値は、フォント リソースの作成時点における acquiredStream が参照するストリームの状態を表します。以後の GetStream または SetContent の呼び出しは、難読化されていない IStream に対して行われます。

isObfSourceStreamTRUE に設定され、fontEmbeddingXPS_FONT_EMBEDDING_NORMAL に設定されている場合、または partUri が参照する名前が難読化ストリームの構文に従っていない場合は、エラーが返されます。

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMFontResource    *newInterface;
IOpcPartUri           *partUri;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    // The partUriString and acquiredStream variables 
    //   are defined outside of this example.
    hr = xpsFactory->CreatePartUri(partUriString, &partUri);
    if (SUCCEEDED(hr))
    {
        hr = xpsFactory->CreateFontResource (
            acquiredStream, 
            XPS_FONT_EMBEDDING_NORMAL,    // normal
            partUri, 
            FALSE,                        // not obfuscated
            &newInterface);
        if (SUCCEEDED(hr))
        {
            // use newInterface

            newInterface->Release();
        }
        partUri->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 30 HRESULT CreateGradientStop(XPS_COLOR* color, IXpsOMColorProfileResource* colorProfile, FLOAT offset, IXpsOMGradientStop** gradientStop)

グラデーション内の単一の色と位置の定義を表す IXpsOMGradientStop インターフェイスを作成します。

colorXPS_COLOR*in色の値です。
colorProfileIXpsOMColorProfileResource*in使用するカラー プロファイルを含む IXpsOMColorProfileResource インターフェイスへのポインターです。カラーの種類が XPS_COLOR_TYPE_CONTEXT でない場合、このパラメーターは NULL である必要があります。
offsetFLOATin

オフセット値です。

有効な範囲: 0.0–1.0

gradientStopIXpsOMGradientStop**out新しい IXpsOMGradientStop インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
offset の値が無効です。
E_POINTER
color または gradientStopNULL です。
XPS_E_MISSING_COLORPROFILE
カラー プロファイルが必要であるにもかかわらず、colorProfileNULL です。カラーの種類が XPS_COLOR_TYPE_CONTEXT の場合、カラー プロファイルが必要です。
XPS_E_NO_CUSTOM_OBJECTS
colorProfile が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。
XPS_E_UNEXPECTED_COLORPROFILE
カラー プロファイルが不要であるにもかかわらず、colorProfile にカラー プロファイルが含まれています。カラー プロファイルを指定できるのは、カラーの種類が XPS_COLOR_TYPE_CONTEXT の場合のみです。

解説(Remarks)

グラデーション ストップは、特定の位置における色を定義するために使用されます。色はグラデーション ストップ間で補間されます。offset で指定するオフセットは、グラデーションの開始点と終了点の間の相対位置です。線形グラデーションの開始点、または放射状グラデーションの原点におけるオフセットは 0.0 です。線形グラデーションの終了点、または放射状グラデーションの境界となる楕円のオフセットは 1.0 です。グラデーション ストップは、開始点と終了点を含め、これらの間の任意のオフセットに指定できます。次の図は、線形グラデーションのグラデーション パスとグラデーション ストップを示しています。

A figure that shows the terms used in a linear gradient次の図は、放射状グラデーションのグラデーション ストップを示しています。この例では、放射状グラデーション領域は外側の楕円で囲まれた領域であり、グラデーション領域の外側の空間を塗りつぶすために XPS_SPREAD_METHOD_REFLECT スプレッド メソッドが使用されています。

A figure that shows the terms used in a radial gradientIXpsOMGradientStop インターフェイスは、グラデーション内のただ 1 つのストップを指定します。

グラデーションの描画に使用される計算については、XML Paper Specification で説明されています。

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMGradientStop    *newInterface;
// The following values are defined outside of 
// this example.
//  XPS_COLOR                    color;
//  IXpsOMColorProfileResource    *colorProfile;
//  FLOAT                        offset;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateGradientStop (
        &color,
        colorProfile,
        offset,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 31 HRESULT CreateLinearGradientBrush(IXpsOMGradientStop* gradStop1, IXpsOMGradientStop* gradStop2, XPS_POINT* startPoint, XPS_POINT* endPoint, IXpsOMLinearGradientBrush** linearGradientBrush)

IXpsOMLinearGradientBrush インターフェイスを作成します。

gradStop1IXpsOMGradientStop*inグラデーションのベクトルの始点におけるグラデーションのプロパティを指定する IXpsOMGradientStop インターフェイスです。このパラメーターを NULL にすることはできません。
gradStop2IXpsOMGradientStop*inグラデーションのベクトルの終点におけるグラデーションのプロパティを指定する IXpsOMGradientStop インターフェイスです。このパラメーターを NULL にすることはできません。
startPointXPS_POINT*in2 次元空間における開始点の座標を含む XPS_POINT 構造体です。
endPointXPS_POINT*in2 次元空間における終了点の座標を含む XPS_POINT 構造体です。
linearGradientBrushIXpsOMLinearGradientBrush**out新しい IXpsOMLinearGradientBrush インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
startPoint または endPoint で指定された点が無効でした。XPS_POINT 構造体のメンバーには、有効かつ有限の浮動小数点値を指定する必要があります。
E_POINTER
gradStop1gradStop2startPointfigure、または linearGradientBrushNULL です。
XPS_E_NO_CUSTOM_OBJECTS
gradStop1 または gradStop1 が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。

解説(Remarks)

線形グラデーションのグラデーション領域は、開始点と終了点を含むその間の領域であり、グラデーション パスに対して直角方向の両側に広がります。スプレッド領域は、グラデーション領域の外側にあるジオメトリの領域です。

グラデーション ストップは、グラデーション パス上の特定の位置における色を定義します。図では、gradStop1 パラメーターで指定されるグラデーション ストップ 0 がグラデーション パスの開始点に位置し、gradStop2 パラメーターで指定されるグラデーション ストップ 1 が終了点に位置します。

次の図に示すように、線形グラデーションの開始点と終了点は、それらの点を結ぶ直線であるグラデーション パスの開始点と終了点でもあります。

A figure that shows the terms used in a linear gradient次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMLinearGradientBrush    *newInterface;
// The following values are defined outside of 
// this example.
//  IXpsOMGradientStop       *gradStop1, *gradStop2;
//  XPS_POINT                startPoint, endPoint;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateLinearGradientBrush (
        gradStop1,
        gradStop2,
        &startPoint,
        &endPoint,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 32 HRESULT CreateRadialGradientBrush(IXpsOMGradientStop* gradStop1, IXpsOMGradientStop* gradStop2, XPS_POINT* centerPoint, XPS_POINT* gradientOrigin, XPS_SIZE* radiiSizes, IXpsOMRadialGradientBrush** radialGradientBrush)

IXpsOMRadialGradientBrush インターフェイスを作成します。

gradStop1IXpsOMGradientStop*inグラデーションの原点におけるグラデーションのプロパティを指定する IXpsOMGradientStop インターフェイスです。このパラメーターを NULL にすることはできません。
gradStop2IXpsOMGradientStop*inグラデーションのベクトルの終点 (グラデーション領域を囲む楕円) におけるグラデーションのプロパティを指定する IXpsOMGradientStop インターフェイスです。このパラメーターを NULL にすることはできません。
centerPointXPS_POINT*in放射状グラデーションの楕円の中心点の座標です。
gradientOriginXPS_POINT*in放射状グラデーションの原点の座標です。
radiiSizesXPS_SIZE*in

グラデーション領域の半径の長さをメンバーで指定する XPS_SIZE 構造体です。

サイズは XPS 単位で表されます。1 インチは 96 XPS 単位です。たとえば、1" の半径は 96 XPS 単位です。

XPS_SIZE のメンバー 意味
width x 軸方向の半径の長さです。
height y 軸方向の半径の長さです。
radialGradientBrushIXpsOMRadialGradientBrush**out新しい IXpsOMRadialGradientBrush インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
centerPointradiiSizes、または gradientOrigin で表される点が無効です。XPS_POINT 構造体のメンバーには、有効かつ有限の浮動小数点値を指定する必要があります。
E_POINTER
gradStop1gradStop2centerPointgradientOriginradiiSizes、または radialGradientBrushNULL です。
XPS_E_NO_CUSTOM_OBJECTS
gradStop1 または gradStop1 が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。

解説(Remarks)

次の図に示すように、放射状グラデーションのグラデーション領域は、中心点と、中心点から伸びる x 半径および y 半径によって表される楕円で囲まれた領域です。スプレッド領域は、その楕円の外側の領域です。グラデーション パス (図には示していません) は、グラデーションの原点と、グラデーション領域を囲む楕円との間に引かれる放射状の線です。

A figure that shows the terms used in a radial gradient放射状グラデーション ブラシでは、gradStop1 パラメーターで設定するグラデーション ストップが、グラデーションの原点の位置とオフセット値 0.0 に対応します。gradStop2 パラメーターで設定するグラデーション ストップは、グラデーション領域の外周とオフセット値 1.0 に対応します。グラデーション ストップの詳細については、IXpsOMGradientStop を参照してください。

次のコード例は、このメソッドを使用して新しいインターフェイスを作成する方法を示しています。


IXpsOMRadialGradientBrush    *newInterface;
// The following values are defined outside of 
// this example.
//  IXpsOMGradientStop       *gradStop1, *gradStop2;
//  XPS_POINT                centerPoint, gradientOrigin;
//  XPS_SIZE                 radiiSizes;

// Note the implicit requirement that CoInitializeEx 
//  has previously been called from this thread.

hr = CoCreateInstance(
    __uuidof(XpsOMObjectFactory),
    NULL,
    CLSCTX_INPROC_SERVER,
    _uuidof(IXpsOMObjectFactory),
    reinterpret_cast<LPVOID*>(&xpsFactory)
    );

if (SUCCEEDED(hr))
{
    hr = xpsFactory->CreateRadialGradientBrush (
        gradStop1,
        gradStop2,
        &centerPoint,
        &gradientOrigin,
        &radiiSizes,
        &newInterface);

    if (SUCCEEDED(hr))
    {
        // use newInterface

        newInterface->Release();
    }
    xpsFactory->Release();
}
else
{
    // evaluate HRESULT error returned in hr
}
vtbl 33 HRESULT CreateCoreProperties(IOpcPartUri* partUri, IXpsOMCoreProperties** coreProperties)

XPS ドキュメントを説明するメタデータを格納する IXpsOMCoreProperties インターフェイスを作成します。

partUriIOpcPartUri*inこのリソースに割り当てるパート名を含む IOpcPartUri インターフェイスです。このパラメーターを NULL にすることはできません。
corePropertiesIXpsOMCoreProperties**out新しい IXpsOMCoreProperties インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
partUri または corePropertiesNULL です。
vtbl 34 HRESULT CreateDictionary(IXpsOMDictionary** dictionary)

プロパティ リソースの共有を可能にする IXpsOMDictionary インターフェイスを作成します。

dictionaryIXpsOMDictionary**out新しい IXpsOMDictionary インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
dictionaryNULL です。
vtbl 35 HRESULT CreatePartUriCollection(IXpsOMPartUriCollection** partUriCollection)

IOpcPartUri インターフェイス ポインターを格納できる IXpsOMPartUriCollection インターフェイスを作成します。

partUriCollectionIXpsOMPartUriCollection**out新しい IXpsOMPartUriCollection インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
partUriCollectionNULL です。
vtbl 36 HRESULT CreatePackageWriterOnFile(LPWSTR fileName, SECURITY_ATTRIBUTES* securityAttributes, DWORD flagsAndAttributes, BOOL optimizeMarkupSize, XPS_INTERLEAVING interleaving, IOpcPartUri* documentSequencePartName, IXpsOMCoreProperties* coreProperties, IXpsOMImageResource* packageThumbnail, IXpsOMPrintTicketResource* documentSequencePrintTicket, IOpcPartUri* discardControlPartName, IXpsOMPackageWriter** packageWriter)

XPS OM の内容を XPS パッケージに書き込むためのファイルを開きます。

fileNameLPWSTRin作成するファイルの名前です。
securityAttributesSECURITY_ATTRIBUTES*in

SECURITY_ATTRIBUTES 構造体です。この構造体には、独立していますが互いに関連する 2 つのメンバーが含まれます。

  • lpSecurityDescriptor: 省略可能なセキュリティ記述子
  • bInheritHandle: 返されたハンドルを子プロセスが継承できるかどうかを決定するブール値
lpSecurityDescriptorNULL の場合、返されたハンドルに関連付けられたファイルまたはデバイスには、既定のセキュリティ記述子が割り当てられます。

securityAttributes の詳細については、CreateFile を参照してください。

flagsAndAttributesDWORDin

作成するファイルの設定と属性を指定します。ほとんどのファイルでは FILE_ATTRIBUTE_NORMAL 値を使用できます。

このパラメーターの詳細については、CreateFile を参照してください。

optimizeMarkupSizeBOOLin

XPS OM の内容を XPS パッケージに書き込む際に、ドキュメント マークアップをサイズの面で最適化するかどうかを示すブール値です。

意味
TRUE
パッケージ ライターは、マークアップのサイズが最小になるように最適化を試みます。
FALSE
パッケージ ライターは最適化を行いません。
interleavingXPS_INTERLEAVINGinXPS OM の内容をファイルに書き込む際にインターリーブするかどうかを指定します。
documentSequencePartNameIOpcPartUri*in新しいファイル内のドキュメント シーケンスのパート名を含む IOpcPartUri インターフェイスです。
corePropertiesIXpsOMCoreProperties*in新しいファイルに設定するドキュメントのコア プロパティを含む IXpsOMCoreProperties インターフェイスです。このパラメーターは NULL に設定できます。
packageThumbnailIXpsOMImageResource*in新しいファイルに割り当てるサムネイル イメージを含む IXpsOMImageResource インターフェイスです。このパラメーターは NULL に設定できます。
documentSequencePrintTicketIXpsOMPrintTicketResource*in新しいファイルに割り当てるパッケージ レベルの印刷チケットを含む IXpsOMPrintTicketResource インターフェイスです。このパラメーターは NULL に設定できます。
discardControlPartNameIOpcPartUri*inDiscardControl パートの名前を含む IOpcPartUri インターフェイスです。このパラメーターは NULL に設定できます。
packageWriterIXpsOMPackageWriter**outこのメソッドで作成された新しい IXpsOMPackageWriter インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
filenamedocumentSequencePartName、または packageWriterNULL です。
XPS_E_NO_CUSTOM_OBJECTS
corePropertiesdocumentSequencePrintTicket、または packageThumbnail が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。
 

このメソッドは Packaging API を呼び出します。Packaging API の戻り値については、パッケージ化エラーを参照してください。

解説(Remarks)

ファイルが開かれて初期化され、返された IXpsOMPackageWriter インターフェイスを使用して、コンテンツ タイプ、パッケージのリレーションシップ、コア プロパティ、ドキュメント シーケンス リソース、ドキュメント シーケンスのリレーションシップを書き込みます。

documentSequencePrintTicketNULL に設定され、interleaving の値が XPS_INTERLEAVING_ON の場合、このメソッドは空のジョブ レベルの印刷チケットを作成し、その空の印刷チケットへのリレーションシップを追加します。これは、パッケージのストリーミング処理をより効率的に行うためです。

documentSequencePrintTicketNULL に設定され、interleaving の値が XPS_INTERLEAVING_OFF の場合、空の印刷チケットは作成されません。

vtbl 37 HRESULT CreatePackageWriterOnStream(ISequentialStream* outputStream, BOOL optimizeMarkupSize, XPS_INTERLEAVING interleaving, IOpcPartUri* documentSequencePartName, IXpsOMCoreProperties* coreProperties, IXpsOMImageResource* packageThumbnail, IXpsOMPrintTicketResource* documentSequencePrintTicket, IOpcPartUri* discardControlPartName, IXpsOMPackageWriter** packageWriter)

XPS OM の内容を XPS パッケージに書き込むためのストリームを開きます。

outputStreamISequentialStream*in書き込みに使用するストリームです。
optimizeMarkupSizeBOOLin

ドキュメントをストリームに書き込む際に、ドキュメント マークアップをサイズの面で最適化するかどうかを示すブール値です。

意味
TRUE
ストリームへの書き込み時に、パッケージ ライターはマークアップのサイズが最小になるように最適化を試みます。
FALSE
パッケージへの書き込み時に、パッケージ ライターは最適化を行いません。
interleavingXPS_INTERLEAVINGinXPS OM の内容をストリームに書き込む際にインターリーブするかどうかを指定します。
documentSequencePartNameIOpcPartUri*in新しいファイル内のドキュメント シーケンスのパート名を含む IOpcPartUri インターフェイスです。
corePropertiesIXpsOMCoreProperties*in新しいファイルに設定するドキュメントのコア プロパティを含む IXpsOMCoreProperties インターフェイスです。このパラメーターは NULL に設定できます。
packageThumbnailIXpsOMImageResource*in新しいファイルに割り当てるサムネイル イメージを含む IXpsOMImageResource インターフェイスです。このパラメーターは NULL に設定できます。
documentSequencePrintTicketIXpsOMPrintTicketResource*in新しいファイルに割り当てるパッケージ レベルの印刷チケットを含む IXpsOMPrintTicketResource インターフェイスです。このパラメーターは NULL に設定できます。
discardControlPartNameIOpcPartUri*inDiscardControl パートの名前を含む IOpcPartUri インターフェイスです。このパラメーターは NULL に設定できます。
packageWriterIXpsOMPackageWriter**outこのメソッドで作成された新しい IXpsOMPackageWriter インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
outputStreamdocumentSequencePartName、または packageWriterNULL です。
XPS_E_NO_CUSTOM_OBJECTS
corePropertiesdocumentSequencePrintTicket、または packageThumbnail が、認識されるインターフェイス実装を指していません。XPS Document API インターフェイスの独自実装はサポートされていません。
 

このメソッドは Packaging API を呼び出します。Packaging API の戻り値については、パッケージ化エラーを参照してください。

解説(Remarks)

ストリームが開かれて初期化され、返された IXpsOMPackageWriter インターフェイスを使用して、コンテンツ タイプ、パッケージのリレーションシップ、コア プロパティ、ドキュメント シーケンス リソース、ドキュメント シーケンスのリレーションシップを書き込みます。

documentSequencePrintTicketNULL に設定され、interleaving の値が XPS_INTERLEAVING_ON の場合、このメソッドは空のジョブ レベルの印刷チケットを作成し、その空の印刷チケットへのリレーションシップを追加します。これは、パッケージのストリーミング処理をより効率的に行うためです。

documentSequencePrintTicketNULL に設定され、interleaving の値が XPS_INTERLEAVING_OFF の場合、空の印刷チケットは作成されません。

vtbl 38 HRESULT CreatePartUri(LPWSTR uri, IOpcPartUri** partUri)

指定された URI を使用する IOpcPartUri インターフェイスを作成します。

uriLPWSTRinURI 文字列です。
partUriIOpcPartUri**outこのメソッドで作成された IOpcPartUri インターフェイスへのポインターです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
partUriNULL です。
vtbl 39 HRESULT CreateReadOnlyStreamOnFile(LPWSTR filename, IStream** stream)

指定されたファイルに対する読み取り専用の IStream を作成します。

filenameLPWSTRin開くファイルの名前です。
streamIStream**out指定されたファイルに対するストリームです。

戻り値

このメソッドは HRESULT を返します。取り得る値には、次の表に示すものが含まれます (これらに限定されません)。この表に記載されていない XPS ドキュメント API の戻り値については、XPS ドキュメント エラーを参照してください。

戻り値 説明
S_OK
メソッドは成功しました。
E_POINTER
filename または streamNULL です。
 

このメソッドは Packaging API を呼び出します。Packaging API の戻り値については、パッケージ化エラーを参照してください。

解説(Remarks)

CreateReadOnlyStreamOnFileIOpcFactory::CreateStreamOnFile のラッパー メソッドです。次の呼び出しと同じ効果があります。

    hr = opcFactory->CreateStreamOnFile (
        fileName,
        OPC_STREAM_IO_READ,
        NULL,
        FILE_ATTRIBUTE_NORMAL,
        &stream);
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IXpsOMObjectFactory "{F9B2A685-A50D-4FC2-B764-B56E093EA0CA}"
#usecom global IXpsOMObjectFactory IID_IXpsOMObjectFactory "{E974D26D-3D9B-4D47-88CC-3872F2DC3585}"
#comfunc global IXpsOMObjectFactory_CreatePackage                             3 sptr
#comfunc global IXpsOMObjectFactory_CreatePackageFromFile                     4 wstr,int,sptr
#comfunc global IXpsOMObjectFactory_CreatePackageFromStream                   5 sptr,int,sptr
#comfunc global IXpsOMObjectFactory_CreateStoryFragmentsResource              6 sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateDocumentStructureResource           7 sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateSignatureBlockResource              8 sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateRemoteDictionaryResource            9 sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateRemoteDictionaryResourceFromStream  10 sptr,sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreatePartResources                       11 sptr
#comfunc global IXpsOMObjectFactory_CreateDocumentSequence                    12 sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateDocument                            13 sptr,sptr
#comfunc global IXpsOMObjectFactory_CreatePageReference                       14 var,sptr
#comfunc global IXpsOMObjectFactory_CreatePage                                15 var,wstr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreatePageFromStream                      16 sptr,sptr,sptr,int,sptr
#comfunc global IXpsOMObjectFactory_CreateCanvas                              17 sptr
#comfunc global IXpsOMObjectFactory_CreateGlyphs                              18 sptr,sptr
#comfunc global IXpsOMObjectFactory_CreatePath                                19 sptr
#comfunc global IXpsOMObjectFactory_CreateGeometry                            20 sptr
#comfunc global IXpsOMObjectFactory_CreateGeometryFigure                      21 var,sptr
#comfunc global IXpsOMObjectFactory_CreateMatrixTransform                     22 var,sptr
#comfunc global IXpsOMObjectFactory_CreateSolidColorBrush                     23 var,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateColorProfileResource                24 sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateImageBrush                          25 sptr,var,var,sptr
#comfunc global IXpsOMObjectFactory_CreateVisualBrush                         26 var,var,sptr
#comfunc global IXpsOMObjectFactory_CreateImageResource                       27 sptr,int,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreatePrintTicketResource                 28 sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateFontResource                        29 sptr,int,sptr,int,sptr
#comfunc global IXpsOMObjectFactory_CreateGradientStop                        30 var,sptr,float,sptr
#comfunc global IXpsOMObjectFactory_CreateLinearGradientBrush                 31 sptr,sptr,var,var,sptr
#comfunc global IXpsOMObjectFactory_CreateRadialGradientBrush                 32 sptr,sptr,var,var,var,sptr
#comfunc global IXpsOMObjectFactory_CreateCoreProperties                      33 sptr,sptr
#comfunc global IXpsOMObjectFactory_CreateDictionary                          34 sptr
#comfunc global IXpsOMObjectFactory_CreatePartUriCollection                   35 sptr
#comfunc global IXpsOMObjectFactory_CreatePackageWriterOnFile                 36 wstr,var,int,int,int,sptr,sptr,sptr,sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreatePackageWriterOnStream               37 sptr,int,int,sptr,sptr,sptr,sptr,sptr,sptr
#comfunc global IXpsOMObjectFactory_CreatePartUri                             38 wstr,sptr
#comfunc global IXpsOMObjectFactory_CreateReadOnlyStreamOnFile                39 wstr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。