Condividi tramite


Interfacce della parte XPS OM

Questo argomento descrive come usare le interfacce che forniscono l'accesso alle parti dei documenti XPS in un ambiente XPS OM.

Nome interfaccia Interfacce figlio logiche Descrizione
IXpsOMPart
IXpsOMDocumentSequence
IXpsOMDocument
IXpsOMPageReference
IXpsOMCoreProperties
IXpsOMResource
Componenti del documento che costituiscono la struttura del documento.
IXpsOMResource
IXpsOMPartResources
IXpsOMFontResource
IXpsOMImageResource
IXpsOMColorProfileResource
IXpsOMPrintTicketResource
IXpsOMRemoteDictionaryResource
IXpsOMDocumentStructureResource
IXpsOMStoryFragmentsResource
IXpsOMSignatureBlockResource
Componenti del documento che contengono elementi usati in o a cui fa riferimento una pagina o un documento.
IXpsOMPartUriCollection
Nessuno
Raccolta di URI di parte.

Esempi di codice

Gli esempi di codice che seguono illustrano due esempi di come usare le interfacce della parte per accedere al contenuto DI XPS OM.

Ottenere il nome di una parte del documento

L'esempio di codice seguente passa a una parte del documento e ottiene il nome della parte.

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

Ottenere le risorse della parte associate a questa pagina

L'esempio di codice seguente ottiene gli elenchi delle diverse risorse usate da questa pagina.

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