Utilisation des interfaces IXpsOMPageReference

Cette rubrique explique comment utiliser les interfaces qui fournissent l’accès aux références de page dans un modèle d’objet XPS.

Nom de l’interface Interfaces enfants logiques Description
IXpsOMPageReference
IXpsOMPage
Virtualise le contenu d’une page de document.
Une référence de page contient des informations de base sur la page, certaines propriétés de la page et un lien vers le contenu de la page. L’interface IXpsOMPage qui comprend le contenu de la page est retournée par la méthode IXpsOMPageReference :: GetPage .
IXpsOMNameCollection
None
Contient une liste d’éléments de page qui sont des cibles de lien hypertexte. La liste est retournée par la méthode IXpsOMPageReference :: CollectLinkTargets .
IXpsOMPartResources
None
Contient une liste des ressources basées sur un composant qui sont associées à la page. Cette liste est retournée par la méthode IXpsOMPageReference :: CollectPartResources .

Exemples de code

Les exemples de code suivants illustrent l’utilisation des interfaces de référence de page dans un programme.

Obtient le contenu de la page

L’exemple de code suivant obtient un pointeur vers l’interface IXpsOMPage qui comprend le contenu de la page. Si la page n’a pas été chargée dans le modèle d’objet XPS, comme c’est le cas lorsque le modèle d’objet XPS est initialisé en appelant IXpsOMObjectFactory :: CreatePackageFromFile, l’appel de IXpsOMPageReference :: GetPage chargera la page dans le modèle d’objet XPS.

    {
    HRESULT        hr = S_OK;
    IXpsOMPage     *page = NULL;

    // pageRef contains the current page reference
    // and is passed in as a parameter

    // get the page content of this page reference
    hr = pageRef->GetPage (&page);

L’exemple de code suivant obtient un pointeur vers l’interface IXpsOMNameCollection qui contient la liste des éléments de page qui sont des cibles de lien hypertexte. Si la page n’a pas été chargée dans le modèle d’objet XPS, la liste des cibles de lien hypertexte est lue à partir du balisage PageContent. LinkTargets . Si la page a été chargée, CollectLinkTargets vérifie chaque élément de la page et retourne une liste d’éléments dont l’attribut IsHyperlinkTarget a la valeur true.

    HRESULT                         hr = S_OK;
    IXpsOMPage                      *page = NULL;
    IXpsOMNameCollection            *linkTargets = NULL;

    UINT32 numTargets = 0;
    UINT32 thisTarget = 0;
    LPWSTR thisTargetName = NULL;

    // pageRef contains the current page reference 

    // if the page hasn't been loaded yet, for example, if the XPS OM 
    //  was loaded from an XPS document, CollectLinkTargets obtains the
    //  list of link targets from the <PageContent.LinkTargets> markup
    hr = pageRef->CollectLinkTargets(&linkTargets);

    // get the page content of this page reference
    hr = pageRef->GetPage (&page);

    // after the page object has been loaded and calling GetPage or 
    //  by creating a page in the XPS OM, CollectLinkTargets will now check
    //  each of the page elements to return the list so this call to
    //  CollectLinkTargets might take longer to return than the previous
    //  call above if the XPS OM was created from a file
    linkTargets->Release(); // release previous collection
    hr = pageRef->CollectLinkTargets(&linkTargets);
    
    // walk the list of link targets returned
    hr = linkTargets->GetCount( &numTargets );
    thisTarget = 0;
    while (thisTarget < numTargets) {
        hr = linkTargets->GetAt (thisTarget, &thisTargetName);
        printf ("%s\n", thisTargetName);
        // release the target string returned to prevent memory leaks
        CoTaskMemFree (thisTargetName);
        // get next target in list
        thisTarget++;
    }
    // release page and the link target collection
    page->Release();
    linkTargets->Release();

Obtient les ressources de composant 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 );

IXpsOMNameCollection

IXpsOMPage

IXpsOMPageReference

IXpsOMPartResources

XML Paper Specification