DocumentMap/Índice para DocumentViewer e chamar um hiperlink por nome ou número de link para documentos XPS

StackOverflow https://stackoverflow.com/questions/3293856

Pergunta

Tenho arquivos XPS com marcadores de cabeçalho.Se você abrir o documento de origem no Word e for em visualizar->Mapa do Documento, verá todos os marcadores à esquerda.É possível obter essa mesma funcionalidade no DocumentViewer, como você obteria com um documento PDF em algum tipo de leitor de PDF?

Além disso, o RequestNavigateEventHandler mostra que cada hiperlink/marcador em um documento XPS tem um Uri específico que é algo como "C:\meu caminho\para\arquivo.xps#PG_N_LNK_X" onde X é um número exclusivo para o link e N é o número de página.Gostaria de descobrir uma maneira de chamar um marcador pelo título.Por exemplo, se eu tivesse uma seção chamada "Tela principal" que estava na página 8 do arquivo XPS, o Uri desse marcador terminaria em algo como #PG_8_LNK_3.É possível obter esse Uri no cabeçalho do marcador?

Foi útil?

Solução

Para aqueles que se perguntam, os documentos XPS são simplesmente arquivos zip.Extraia o zip e analise o arquivo XML \ Documents \ 1 \ Docstructurure.Strute para as entradas do contorno.

Outras dicas

Dê uma olhada em:

Como abrir um XPS em marcadores específicos

O método "GetBookmarks" na última resposta extrai os marcadores do arquivo XPS.O método "GotoBookmarkElement" navega até o marcador.

Uma maneira mais rápida de navegar até o marcador pode ser feita definindo a propriedade Frame.Source:

DocFrame.Source = new Uri(string.Format("pack://file:,,,{0}/FixedDocSeq.fdseq#{1}", _filePath.Replace('\\', ','), bookmark.Name));

A string de entrada para o Uri-Constructor é semelhante a:

"pack://file:,,,C:,temp,Help,Manual.xps/FixedDocSeq.fdseq#PG_6_LNK_380"

para um arquivo localizado em:

"C:\\temp\\Help\\Manual.xps"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top