Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
- Obtenir la liste des cibles de lien hypertexte sur cette page
- Récupérer les ressources de composant associées à cette page
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);
Obtenir la liste des cibles de lien hypertexte sur cette 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 );