DocumentViewer的DocumentMap /目录,并通过XPS文档的名称或链接号调用超链接

时间:2010-07-20 19:58:26

标签: bookmarks xpsdocument documentviewer

我有带标题书签的XPS文件。如果在Word中打开源文档并转到view-> Document Map,则会在左侧看到所有书签。是否可以在DocumentViewer中获得相同的功能,就像在某种PDF阅读器中获得PDF文档一样?

此外,RequestNavigateEventHandler显示XPS文档中的每个超链接/书签都有一个特定的Uri,类似于“C:\ my path \ to \ file.xps#PG_N_LNK_X”,其中X是链接的唯一编号, N是页码。我想找出一种通过标题调用书签的方法。例如,如果我在XPS文件的第8页上有一个名为“主屏幕”的部分,则该书签的Uri将结束类似#PG_8_LNK_3的内容。我可以从Bookmark Heading获得Uri吗?

2 个答案:

答案 0 :(得分:0)

对于那些想知道的人来说,XPS文档只是简单的ZIP文件。解压缩zip并解析大纲条目的XML文件\ Documents \ 1 \ DocStructure.Struct。

答案 1 :(得分:0)

看看:

How to open a XPS in a specified bookmarks

最后一个答案中的“GetBookmarks”方法从XPS-File中提取书签。方法“GotoBookmarkElement”导航到书签。

可以通过设置Frame.Source属性来快速导航到书签:

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

Uri-Constructor的输入字符串如下:

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

对于位于以下位置的文件:

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