DocumentMap / Tabla de contenido para DocumentViewer, y llame a un hipervínculo por nombre o número de enlace para documentos XPS

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

Pregunta

Tengo archivos XPS con marcadores de encabezado.Si abre el documento de origen en Word e Ir a ver-> Mapa de documentos, ve todos los marcadores a la izquierda.¿Es posible obtener esta misma funcionalidad en DocumentViewer, como usted obtendría con un documento PDF en algún tipo de lector PDF?

Además, el SolicitudVigateEventhandler muestra que cada hipervínculo / marcador en un documento XPS tiene un URI específico, que es algo así como "C: \ My Race \ to \ file.xps # pg_n_lnk_x" donde X es un número único para el enlace yN es el número de página.Me gustaría encontrar una manera de llamar a un marcador por su encabezado.Por ejemplo, si tuviera una sección llamada "Pantalla principal", que estaba en la página 8 del archivo XPS, el URI para ese marcador terminaría algo como # pg_8_lnk_3.¿Es posible que yo obtenga ese URI del encabezado del marcador?

¿Fue útil?

Solución

Para aquellos que se preguntan, los documentos XPS son simplemente archivos ZIP.Extraiga la cremallera y analice el archivo XML \ documents \ 1 \ DOCStructure.estruct para las entradas del esquema.

Otros consejos

Eche un vistazo a:

Cómo abrir un XPS en un marcador específico

El método "GetBookwelks" en la última respuesta extrae los marcadores del archivo XPS.El método "gotoTookMarment" navega al marcador.

Una forma más rápida de navegar al marcador se podría hacer configurando la propiedad Frame.Source:

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

La cadena de entrada para el aspecto de URI-Constructor como:

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

para un archivo que se encuentra en:

"C:\\temp\\Help\\Manual.xps"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top