【问题标题】:DocumentMap/Table of Contents for DocumentViewer, and calling a hyperlink by name or link number for XPS documentsDocumentViewer 的 DocumentMap/目录,并通过名称或链接号调用 XPS 文档的超链接
【发布时间】:2010-07-20 19:58:25
【问题描述】:

我有带有标题书签的 XPS 文件。如果您在 Word 中打开源文档并转到查看-> 文档图,您会看到左侧的所有书签。是否有可能在 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 之类的形式结尾。我可以从书签标题中获得那个 Uri 吗?

【问题讨论】:

    标签: bookmarks xpsdocument documentviewer


    【解决方案1】:

    对于那些想知道的人,XPS 文档只是 Z​​IP 文件。提取 zip 并解析 XML 文件 \Documents\1\DocStructure.Struct 以获得大纲条目。

    【讨论】:

      【解决方案2】:

      看看:

      How to open a XPS in a specified bookmarks

      最后一个答案中的“GetBookmarks”方法从 XPS 文件中提取书签。 “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"
      

      【讨论】:

        猜你喜欢
        • 2013-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-06
        • 2020-08-05
        • 2010-12-06
        • 2016-01-19
        • 1970-01-01
        相关资源
        最近更新 更多