Arbeiten mit IXpsOMDocument-Schnittstellen

In diesem Thema werden die Schnittstellen beschrieben, die Zugriff auf die Komponenten auf Dokumentebene eines XPS OM bieten.

Schnittstellenname Logische untergeordnete Schnittstellen BESCHREIBUNG
IXpsOMDocument
IXpsOMPageReference
Stellt einen einzelnen FixedDocument-Teil dar und bindet eine Auflistung von Seitenverweisen.
IXpsOMPageReferenceCollection ist die Sammlungsschnittstelle, die zum Iterieren der IXpsOMPageReference-Schnittstellen in einem Dokument verwendet wird.
IXpsOMDocumentStructureResource
Keine
Stellt den DocumentStructure-Teil dar.

Codebeispiele

Die Codebeispiele in diesem Abschnitt veranschaulichen, wie einige der Dokumentschnittstellen in einem Programm verwendet werden.

Hier finden Sie die Seitenverweise eines Dokuments.

Das folgende Codebeispiel ruft einen Zeiger auf die IXpsOMPageReferenceCollection ab, die die Liste der IXpsOMPageReference-Schnittstellen für das Dokument enthält, auf das der doc-Parameter verweist.

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

Dokumentstruktur eines Dokuments

Das folgende Codebeispiel ruft die Ressource ab, die die Dokumentstruktur enthält.

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