Compartir a través de


Trabajar con interfaces IXpsOMDocument

En este tema se describen las interfaces que proporcionan acceso a los componentes de nivel de documento de un OM XPS.

Nombre de la interfaz Interfaces secundarias lógicas Descripción
IXpsOMDocument
IXpsOMPageReference
Representa un único elemento FixedDocument y enlaza una colección de referencias de página.
IXpsOMPageReferenceCollection es la interfaz de colección que se usa para recorrer en iteración las interfaces IXpsOMPageReference de un documento.
IXpsOMDocumentStructureResource
None
Representa la parte DocumentStructure.

Ejemplos de código

En los ejemplos de código de esta sección se muestra cómo se usan algunas de las interfaces de documento en un programa.

Obtener las referencias de página de un documento

En el ejemplo de código siguiente se obtiene un puntero a IXpsOMPageReferenceCollection que contiene la lista de interfaces IXpsOMPageReference del documento al que hace referencia el parámetro doc .

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

Obtención de la estructura del documento de un documento

En el ejemplo de código siguiente se obtiene el recurso que contiene la estructura del documento.

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