Condividi tramite


Uso delle interfacce IXpsOMPageReference

In questo argomento viene descritto come usare le interfacce che forniscono l'accesso ai riferimenti di pagina in un file XPS OM.

Nome interfaccia Interfacce figlio logiche Descrizione
IXpsOMPageReference
IXpsOMPage
Virtualizza il contenuto di una pagina del documento.
Un riferimento alla pagina contiene informazioni di base sulla pagina, alcune proprietà della pagina e un collegamento al contenuto della pagina. L'interfaccia IXpsOMPage che comprende il contenuto della pagina viene restituita dal metodo IXpsOMPageReference::GetPage.
IXpsOMNameCollection
None
Contiene un elenco di elementi di pagina che sono destinazioni collegamento ipertestuale. L'elenco viene restituito dal metodo IXpsOMPageReference::CollectLinkTargets.
IXpsOMPartResources
None
Contiene un elenco delle risorse basate su parti associate alla pagina. Questo elenco viene restituito dal metodo IXpsOMPageReference::CollectPartResources.

Esempi di codice

Gli esempi di codice seguenti illustrano come usare le interfacce di riferimento della pagina in un programma.

Ottenere il contenuto della pagina

Nell'esempio di codice seguente viene visualizzato un puntatore all'interfaccia IXpsOMPage che comprende il contenuto della pagina. Se la pagina non è stata caricata nell'OM XPS, come accade quando l'OM XPS viene inizializzato chiamando IXpsOMObjectFactory::CreatePackageFromFile, chiamando IXpsOMPageReference::GetPage la pagina verrà caricata nell'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'esempio di codice seguente ottiene un puntatore all'interfaccia IXpsOMNameCollection che contiene l'elenco di elementi di pagina che sono destinazioni collegamento ipertestuale. Se la pagina non è stata caricata nell'OM XPS, l'elenco delle destinazioni collegamento ipertestuale viene letto dal markup PageContent.LinkTargets . Se la pagina è stata caricata, CollectLinkTargets controlla ogni elemento nella pagina e restituisce un elenco di elementi il cui attributo IsHyperlinkTarget è 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();

Ottenere le risorse della parte associate a questa pagina

Nell'esempio di codice seguente vengono visualizzati 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 );

IXpsOMNameCollection

IXpsOMPage

IXpsOMPageReference

IXpsOMPartResources

Specifica di carta XML