Interfaces de elementos de OM XPS
En este tema se describe cómo usar las interfaces que proporcionan acceso a elementos de documento XPS en un OM XPS.
Nombre de la interfaz | Interfaces secundarias lógicas | Descripción |
---|---|---|
IXpsOMPart |
IXpsOMDocumentSequence IXpsOMDocument IXpsOMPageReference IXpsOMCoreProperties IXpsOMResource |
Componentes de documento que componen la estructura del documento. |
IXpsOMResource IXpsOMPartResources |
IXpsOMFontResource IXpsOMImageResource IXpsOMColorProfileResource IXpsOMPrintTicketResource IXpsOMRemoteDictionaryResource IXpsOMDocumentStructureResource IXpsOMStoryFragmentsResource IXpsOMSignatureBlockResource |
Componentes de documento que contienen elementos que se usan en una página o un documento o hacen referencia a él. |
IXpsOMPartUriCollection |
None |
Colección de URI de parte. |
Ejemplos de código
Los ejemplos de código siguientes muestran dos ejemplos de cómo usar las interfaces de elementos para acceder al contenido de XPS OM.
Obtener el nombre de un elemento de documento
El siguiente ejemplo de código navega a un elemento de documento y obtiene el nombre del elemento.
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();
Obtener los recursos de elemento asociados a esta página
En el ejemplo de código siguiente se obtienen las listas de los distintos recursos que usa esta página.
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();