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 );