XPS OM パーツ インターフェイス
このトピックでは、XPS OM で XPS ドキュメント パーツへのアクセスを提供するインターフェイスを使用する方法について説明します。
インターフェイス名 | 論理子インターフェイス | 説明 |
---|---|---|
IXpsOMPart |
IXpsOMDocumentSequence IXpsOMDocument IXpsOMPageReference IXpsOMCoreProperties IXpsOMResource |
ドキュメント構造を構成するドキュメント コンポーネント。 |
IXpsOMResource IXpsOMPartResources |
IXpsOMFontResource IXpsOMImageResource IXpsOMColorProfileResource IXpsOMPrintTicketResource IXpsOMRemoteDictionaryResource IXpsOMDocumentStructureResource IXpsOMStoryFragmentsResource IXpsOMSignatureBlockResource |
ページまたはドキュメントで使用または参照される要素を含むドキュメント コンポーネント。 |
IXpsOMPartUriCollection |
None |
パーツ URI のコレクション。 |
コード例
次のコード例は、パーツ インターフェイスを使用して XPS OM コンテンツにアクセスする方法の 2 つの例を示しています。
ドキュメント パーツの名前を取得する
次のコード例では、ドキュメント パーツに移動し、パーツの名前を取得します。
HRESULT hr = S_OK;
IXpsOMDocumentSequence *docSeq;
IXpsOMDocumentCollection *docs;
IXpsOMDocument *doc;
IXpsOMPageReferenceCollection *pages;
IXpsOMPageReference *pageRef;
IXpsOMPage *page;
IOpcPartUri *thisDocPartUri;
IOpcPartUri *thisPagePartUri;
UINT32 numDocs = 0;
UINT32 thisDoc = 0;
UINT32 numPageRefs = 0;
UINT32 thisPageRef = 0;
// package points to the IXpsOMPackage interface to walk.
// get the fixed document sequence of the package
hr = package->GetDocumentSequence(&docSeq);
// get the fixed documents in the fixed document sequence
hr = docSeq->GetDocuments(&docs);
// walk the collection of documents;
hr = docs->GetCount(&numDocs);
thisDoc = 0;
while (thisDoc < numDocs) {
hr = docs->GetAt(thisDoc, &doc);
// get the part name (URI) of this document
hr = doc->GetPartName ( &thisDocPartUri );
// get the doc contents
hr = doc->GetPageReferences(&pages);
// walk the collection of page references
hr = pages->GetCount(&numPageRefs);
thisPageRef = 0;
while (thisPageRef < numPageRefs) {
// get this page reference
hr = pages->GetAt(thisPageRef, &pageRef );
// get the part name (URI) of this page
hr = pageRef->GetPage (&page);
hr = page->GetPartName ( &thisPagePartUri );
// do something with the part name
thisPagePartUri->Release();
page->Release();
pageRef->Release();
thisPageRef++;
}
pages->Release();
thisDocPartUri->Release();
doc->Release();
thisDoc++;
}
docs->Release();
docSeq->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 );
// use resources
dictionaryResources->Release();
imageResources->Release();
fontResources->Release();
colorProfileResources->Release();
resources->Release();