DocumentMap / DocumentViewerの目次/目次、およびXPS文書の名前またはリンク番号でハイパーリンクを呼び出す
-
18-09-2020 - |
質問
ヘッダーブックマークを持つXPSファイルを持っています。Wordでソースドキュメントを開いて表示 - >ドキュメントマップに移動すると、左側のブックマークがすべて表示されます。DocumentViewerでこの同じ機能を取得することは、PDF文書をある種のPDFリーダーで取得することができますか?
また、RequestNavigateEventHandlerは、XPSドキュメントの各ハイパーリンク/ブックマークに、「C:\ My Path \ To \ File.xps#pg_n_lnk_x」のようなものであることを示しています。ここで、Xはリンクの固有の番号です。nはページ番号です。見出しでブックマークを呼び出す方法を把握したいと思います。たとえば、XPSファイルの8ページにある「メイン画面」というセクションがあれば、そのブックマークのURIは#pg_8_lnk_3のようなものを終了します。ブックマーク見出しからそのURIを手に入れることは可能ですか?
解決
疑問に思うのはXPS文書は単にzipファイルです。ZIPを抽出し、アウトラインエントリのXMLファイル\ Documents \ 1 \ docstructure.Structを解析します。
他のヒント
見てみる:
最後の回答のメソッド "GetBookmarks"は、XPSファイルからブックマークを抽出します。メソッド "GotoBookmarklement"はブックマークに移動します。
ブックマークに移動する手間を短くすると、frame.sourceプロパティを設定することで実行できます。
DocFrame.Source = new Uri(string.Format("pack://file:,,,{0}/FixedDocSeq.fdseq#{1}", _filePath.Replace('\\', ','), bookmark.Name));
.
URIコンストラクターの入力文字列は次のようになります。
"pack://file:,,,C:,temp,Help,Manual.xps/FixedDocSeq.fdseq#PG_6_LNK_380"
.
にあるファイルの
"C:\\temp\\Help\\Manual.xps"
.