Partager via


Utiliser des interfaces IXpsOMPageReference

Cette rubrique explique comment utiliser les interfaces qui fournissent l’accès aux références de page dans un om 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 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
Aucun
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
Aucun
Contient une liste des ressources stockées sous forme de composants et associées à la page. Cette liste est retournée par la méthode IXpsOMPageReference ::CollectPartResources .

Exemples de code

Les exemples de code suivants illustrent comment utiliser les interfaces de référence de page dans un programme.

Obtenir 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 l'OM XPS, ce qui se produit lorsque l'OM XPS est initialisé en appelant IXpsOMObjectFactory::CreatePackageFromFile, l’appel à IXpsOMPageReference::GetPage chargera la page dans l'OM 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 l’om 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 est 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();

Obtenir les ressources associées à cette page pour la partie

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

spécification de papier XML