DocumentMap / Table des matières pour DocumentViewer et appeler un lien hypertexte par nom ou numéro de lien pour les documents XPS
-
18-09-2020 - |
Question
J'ai des fichiers XPS avec des signets d'en-tête.Si vous ouvrez le document source en Word et allez à Affichage-> Carte du document, vous voyez tous les signets de gauche à gauche.Est-il possible d'obtenir cette même fonctionnalité dans Documentviewer, comme si vous obtiendriez avec un document PDF dans une sorte de lecteur PDF?
En outre, le demandeurAavimeDeventHandler montre que chaque hyperlien / signet d'un document XPS a une uri spécifique qui est quelque chose comme "c: \ mon chemin \ to \ to \ file.xps # pg_n_lnk_x" où x est un numéro unique pour le lien etN est le numéro de page.J'aimerais trouver un moyen d'appeler un signet par sa rubrique.Par exemple, si j'avais une section appelée "écran principal" qui était à la page 8 du fichier XPS, l'URI de ce signet finirait quelque chose comme # pg_8_lnk_3.Est-il possible pour moi d'obtenir cet URI de la bande de signet?
La solution
Pour ceux qui se demandent, les documents XPS sont simplement des fichiers zip.Extrayez le zip et analysez le fichier XML \ documents \ 1 \ docstructure.structure pour les entrées de plan.
Autres conseils
Regardez:
Comment ouvrir un XPS dans un signet spécifié
La méthode "getbookmarks" dans la dernière réponse extrait les signets du fichier XPS.La méthode "gotobookmarkElement" navigue vers le signet.
Un moyen plus rapide de naviguer vers le signet pourrait être effectué en définissant la propriété image.Source:
DocFrame.Source = new Uri(string.Format("pack://file:,,,{0}/FixedDocSeq.fdseq#{1}", _filePath.Replace('\\', ','), bookmark.Name));
La chaîne d'entrée pour l'URI-Constructor ressemble à:
"pack://file:,,,C:,temp,Help,Manual.xps/FixedDocSeq.fdseq#PG_6_LNK_380"
pour un fichier situé dans:
"C:\\temp\\Help\\Manual.xps"