Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico descreve como usar as interfaces que fornecem acesso a referências de página em um OM XPS.
| Nome da interface | Interfaces filho lógicas | Descrição |
|---|---|---|
| IXpsOMPageReference |
IXpsOMPage |
Virtualiza o conteúdo de uma página de documento. Uma referência de página contém informações básicas sobre a página, algumas propriedades de página e um link para o conteúdo da página. A interface IXpsOMPage que compreende o conteúdo da página é retornada pelo método IXpsOMPageReference::GetPage . |
| IXpsOMNameCollection |
Nenhum |
Contém uma lista de itens de página que são destinos de hiperlink. A lista é retornada pelo método IXpsOMPageReference::CollectLinkTargets . |
| IXpsOMPartResources |
Nenhum |
Contém uma lista dos recursos baseados em componentes associados à página. Essa lista é retornada pelo método IXpsOMPageReference::CollectPartResources . |
Exemplos de código
Os exemplos de código a seguir ilustram como trabalhar com as interfaces de referência de página em um programa.
- Obter o conteúdo da página
- Obter a lista de destinos de hiperlink nesta página
- Obter os recursos de parte associados a esta página
Obter o conteúdo da página
O exemplo de código a seguir obtém um ponteiro para a interface IXpsOMPage que contém o conteúdo da página. Se a página não tiver sido carregada no OM XPS, como acontece quando o OM XPS é inicializado chamando IXpsOMObjectFactory::CreatePackageFromFile, chamar IXpsOMPageReference::GetPage carregará a página no 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);
Obter a lista de destinos de hiperlink nesta página
O exemplo de código a seguir obtém um ponteiro para a interface IXpsOMNameCollection que contém a lista de itens de página que são destinos de hiperlink. Se a página não tiver sido carregada no OM XPS, a lista de destinos de hiperlink será lida a partir da marcação PageContent.LinkTargets. Se a página tiver sido carregada, CollectLinkTargets verificará cada elemento na página e retornará uma lista de elementos cujo atributo 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();
Obter os recursos de parte associados a esta página
O exemplo de código a seguir obtém as listas dos diferentes recursos que são usados por esta página.
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 );