DocumentMap / Table des matières pour DocumentViewer et appeler un lien hypertexte par nom ou numéro de lien pour les documents XPS

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

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?

Était-ce utile?

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"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top