次の方法で共有


IXpsOMPageReference インターフェイスの操作

このトピックでは、XPS OM のページ参照へのアクセスを提供するインターフェイスを使用する方法について説明します。

インターフェイス名 論理子インターフェイス 説明
IXpsOMPageReference
IXpsOMPage
ドキュメント ページのコンテンツを仮想化します。
ページ参照には、ページに関する基本情報、いくつかのページ プロパティ、およびページ コンテンツへのリンクが含まれています。 ページの内容を構成する IXpsOMPage インターフェイスは、IXpsOMPageReference::GetPage メソッドによって返されます。
IXpsOMNameCollection
なし
ハイパーリンク ターゲットであるページ アイテムの一覧が含まれています。 リストは IXpsOMPageReference::CollectLinkTargets メソッドによって返されます。
IXpsOMPartResources
なし
ページに関連付けられているパーツ ベースのリソースの一覧が含まれます。 このリストは、IXpsOMPageReference::CollectPartResources メソッドによって返されます。

コード例

次のコード例は、プログラムでページ参照インターフェイスを操作する方法を示しています。

ページの内容を取得する

次のコード例では、ページの内容を構成する IXpsOMPage インターフェイスへのポインターを取得します。 ページが XPS OM に読み込まれていない場合は、XPS OM が IXpsOMObjectFactory::CreatePackageFromFile を呼び出して初期化されるときに発生します。IXpsOMPageReference::GetPage を呼び出すと、ページが XPS OM に読み込まれます。

    {
    HRESULT        hr = S_OK;
    IXpsOMPage     *page = NULL;

    // pageRef contains the current page reference
    // and is passed in as a parameter

    // get the page content of this page reference
    hr = pageRef->GetPage (&page);

次のコード例では、ハイパーリンク ターゲットであるページ項目の一覧を含む IXpsOMNameCollection インターフェイスへのポインターを取得します。 ページが XPS OM に読み込まれていない場合は、ハイパーリンク ターゲットの一覧が PageContent.LinkTargets マークアップから読み取られます。 ページが読み込まれている場合、CollectLinkTargets はページ内の各要素をチェックし、IsHyperlinkTarget 属性が TRUE の 要素の一覧を返します。

    HRESULT                         hr = S_OK;
    IXpsOMPage                      *page = NULL;
    IXpsOMNameCollection            *linkTargets = NULL;

    UINT32 numTargets = 0;
    UINT32 thisTarget = 0;
    LPWSTR thisTargetName = NULL;

    // pageRef contains the current page reference 

    // if the page hasn't been loaded yet, for example, if the XPS OM 
    //  was loaded from an XPS document, CollectLinkTargets obtains the
    //  list of link targets from the <PageContent.LinkTargets> markup
    hr = pageRef->CollectLinkTargets(&linkTargets);

    // get the page content of this page reference
    hr = pageRef->GetPage (&page);

    // after the page object has been loaded and calling GetPage or 
    //  by creating a page in the XPS OM, CollectLinkTargets will now check
    //  each of the page elements to return the list so this call to
    //  CollectLinkTargets might take longer to return than the previous
    //  call above if the XPS OM was created from a file
    linkTargets->Release(); // release previous collection
    hr = pageRef->CollectLinkTargets(&linkTargets);
    
    // walk the list of link targets returned
    hr = linkTargets->GetCount( &numTargets );
    thisTarget = 0;
    while (thisTarget < numTargets) {
        hr = linkTargets->GetAt (thisTarget, &thisTargetName);
        printf ("%s\n", thisTargetName);
        // release the target string returned to prevent memory leaks
        CoTaskMemFree (thisTargetName);
        // get next target in list
        thisTarget++;
    }
    // release page and the link target collection
    page->Release();
    linkTargets->Release();

このページに関連付けられているパーツ リソースを取得する

次のコード例では、このページで使用されるさまざまなリソースの一覧を取得します。

    HRESULT                                   hr = S_OK;
    IXpsOMPartResources                       *resources;

    IXpsOMColorProfileResourceCollection      *colorProfileResources;
    IXpsOMFontResourceCollection              *fontResources;
    IXpsOMImageResourceCollection             *imageResources;
    IXpsOMRemoteDictionaryResourceCollection  *dictionaryResources; 

    // pageRef contains the current page reference 
    hr = pageRef->CollectPartResources ( &resources );

    // Get pointers to each type of resource
    hr = resources->GetColorProfileResources( &colorProfileResources );
    hr = resources->GetFontResources( &fontResources );
    hr = resources->GetImageResources( &imageResources );
    hr = resources->GetRemoteDictionaryResources( &dictionaryResources );

IXpsOMNameCollection

IXpsOMPage

IXpsOMPageReference

IXpsOMPartResources

XML Paper Specification