Partager via


Interfaces de composant OM XPS

Cette rubrique explique comment utiliser les interfaces qui fournissent l’accès aux composants de document XPS dans un modèle d’interface utilisateur XPS.

Nom de l’interface Interfaces enfants logiques Description
IXpsOMPart
IXpsOMDocumentSequence
IXpsOMDocument
IXpsOMPageReference
IXpsOMCoreProperties
IXpsOMResource
Composants de document qui composent la structure de document.
IXpsOMResource
IXpsOMPartResources
IXpsOMFontResource
IXpsOMImageResource
IXpsOMColorProfileResource
IXpsOMPrintTicketResource
IXpsOMRemoteDictionaryResource
IXpsOMDocumentStructureResource
IXpsOMStoryFragmentsResource
IXpsOMSignatureBlockResource
Composants de document qui contiennent des éléments utilisés ou référencés par une page ou un document.
IXpsOMPartUriCollection
Aucun
Collection d’URI de partie.

Exemples de code

Les exemples de code qui suivent montrent deux exemples d’utilisation des interfaces de partie pour accéder au contenu de l’om XPS.

Obtenir le nom d’un composant de document

L’exemple de code suivant accède à un composant de document et obtient le nom du composant.

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

Obtenir les ressources de partie associées à cette page

L’exemple de code suivant obtient les listes des différentes ressources utilisées par cette page.

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