Working with IXpsOMDocument Interfaces
This topic describes the interfaces that provide access to the document-level components of an XPS OM.
Interface name | Logical child interfaces | Description |
---|---|---|
IXpsOMDocument |
IXpsOMPageReference |
Represents a single FixedDocument part and binds a collection of page references. IXpsOMPageReferenceCollection is the collection interface that is used to iterate through the IXpsOMPageReference interfaces in a document. |
IXpsOMDocumentStructureResource |
None |
Represents the DocumentStructure part. |
Code Examples
The code examples in this section illustrate how some of the document interfaces are used in a program.
Get the page references of a document
The following code example gets a pointer to the IXpsOMPageReferenceCollection that contains the list of IXpsOMPageReference interfaces for the document that is referenced by doc parameter.
HRESULT hr = S_OK;
IXpsOMPageReferenceCollection *pages;
IXpsOMPageReference *pageRef;
IXpsOMPage *page;
UINT32 numPageRefs = 0;
UINT32 thisPageRef = 0;
// 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 page content of this page reference
hr = pageRef->GetPage (&page);
// use the page
// free this page & page reference and go to next
page->Release();
pageRef->Release();
thisPageRef++;
}
pages->Release();
Get the document structure of a document
The following code example gets the resource that contains the document structure.
HRESULT hr = S_OK;
IXpsOMDocumentStructureResource *docStruct;
IStream *docStructResStream;
// doc is passed in as an argument
// get the doc contents
hr = doc->GetDocumentStructureResource(&docStruct);
hr = docStruct->GetStream ( &docStructResStream );
// access the document structure resource
// contents by reading from the stream
docStructResStream->Release();
docStruct->Release();