Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This topic describes how to use the interfaces that provide access to XPS document parts in an XPS OM.
Interface name | Logical child interfaces | Description |
---|---|---|
Document components that make up the document structure. |
||
IXpsOMFontResource IXpsOMImageResource IXpsOMColorProfileResource IXpsOMPrintTicketResource IXpsOMRemoteDictionaryResource IXpsOMDocumentStructureResource IXpsOMStoryFragmentsResource IXpsOMSignatureBlockResource |
Document components that contain elements that are used in or referenced by a page or a document. |
|
None |
A collection of part URIs. |
Code Examples
The code examples that follow show two examples of how to use the part interfaces to access XPS OM content.
Get the name of a document part
The following code example navigates to a document part and gets the part's name.
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();
Get the part resources that are associated with this page
The following code example gets the lists of the different resources that are used by this page.
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();