J'ai des fichiers XPS avec des signets d'en-tête. Si vous ouvrez le document source dans Word et accédez à Affichage-> Document Map, tous les marque-pages apparaissent à gauche. Est-il possible d'obtenir cette même fonctionnalité dans DocumentViewer, comme vous le feriez avec un document PDF dans une sorte de lecteur PDF? En outre, le RequestNavigateEventHandler montre que chaque lien hypertexte/signet dans un document XPS a un Uri spécifique qui est quelque chose comme "C: \ mon chemin \ vers \ fichier.xps # PG_N_LNK_X" où X est un numéro unique pour le lien et N est le numéro de page. Je voudrais trouver un moyen d'appeler un signet par son titre. Par exemple, si j'avais une section appelée "Écran principal" qui se trouvait à la page 8 du fichier XPS, l'Uri pour ce signet finirait quelque chose comme # PG_8_LNK_3. Est-il possible pour moi d'obtenir ce Uri de la rubrique Bookmark?DocumentMap/Table des matières pour DocumentViewer et l'appel d'un lien hypertexte par nom ou numéro de lien pour les documents XPS
-1
A
Répondre
0
Pour ceux qui se demandent, les documents XPS sont simplement des fichiers ZIP. Extrayez le fichier zip et analysez le fichier XML \ Documents \ 1 \ DocStructure.Struct pour les entrées de plan.
0
Jetez un oeil à:
How to open a XPS in a specified bookmarks
La méthode "getBookmarks" dans la dernière réponse extrait les signets du XPS-fichier. La méthode "GotoBookmarkElement" accède au signet.
Une manière plus rapide pour naviguer vers le signet pourrait être fait en définissant la propriété Frame.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 look's comme:
"pack://file:,,,C:,temp,Help,Manual.xps/FixedDocSeq.fdseq#PG_6_LNK_380"
pour un fichier qui se trouve dans:
"C:\\temp\\Help\\Manual.xps"