从另一个浏览器选项卡或 window 使用 iText 访问 pdf 书签

Access pdf bookmarks from another browser tab or window using iText

我对 itext 比较陌生。我想知道这是否可能。我有一个网络应用程序,其中包含一个显示按钮和 link 到 html 页面上 pdf 书签的书签。单击显示按钮后,pdf 将使用 itext 流式传输到另一个选项卡。一旦流式传输到另一个选项卡,是否可以单击第一个选项卡上的 link 并将 pdf 设置为另一个选项卡中的书签页面?是否必须使用书签集再次流式传输 pdf?

我希望这是有道理的。

谢谢, 格雷格

您当然可以使用 iText 将书签添加到 pdf 文档。

有关详细信息,请参阅 http://developers.itextpdf.com/content/itext-7-building-blocks/chapter-6-creating-actions-destinations-and-bookmarks

然而显示 pdf 文档与 iText 完全无关。 iText 生成和操作 pdf,甚至从 pdf 中提取信息。但是渲染是它不做的事情。

如果您从浏览器呈现 pdf,您可能正在使用某些特定于浏览器的功能,或者例如 pdf.js(显示 pdf 文档的 javascript 库)。

您是否可以 link 到 pdf 中的特定书签完全取决于查看器是否允许您在给定书签处打开 pdf。

您似乎想要创建一个链接到 PDF 中特定页面的 HTML 文件。这可以使用开放参数来完成。有关开放参数的完整概述,请参阅 Parameters for Opening PDF Files。这是 Adob​​e 的出版物。它解释了 Adob​​e Reader 和 Adob​​e Acrobat 接受哪些开放参数。这些参数可能不适用于在野外发现的所有其他 PDF 查看器。

基本上,您可以像这样创建 URL:http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf#page=5&view=Fit

如果您使用 Adob​​e Reader 查看该文档,该文档将在第 5 页打开并且该页面适合查看 window。我已经在 Edge 和 Chrome 的 PDF 查看器上测试过了,但它不起作用。但是,如果我在 Firefox 中的 pdf.js 上尝试此操作,它会起作用。

这些是您可以使用的一些参数:

  • nameddest=name 跳转到 PDF 中名称为 name 的命名目的地。
  • page=pagenum 跳转到页码 pagenum 的页面。此数字表示实际页面,而不是您可能为该页面设置的标签。
  • zoom=scale[ left, top] 设置缩放和滚动系数。比例值为 100 表示 100% 缩放; left 和 top 设置在原点为可见页面左上角的坐标系中,与文档旋转无关。
  • view=fit[parameter] 根据页面大小设置缩放系数。 fit 的值可以是 Fit、FitH、FitV、FitB、FitBH 或 FitVH。
  • viewrect=left,top,width,height 打开文件,使参数指定的矩形可见。

如果您无法控制最终用户的浏览器,我不会在这个要求上投入任何时间。我会简单地告诉给你任务的人,他要求的东西是不可能的。

但是,如果您可以说服最终用户使用像样的 PDF 查看器(最好是接受它的浏览器中的 Adob​​e Reader 插件),您可以使用 iText 从中提取书签或命名目标PDF 并使用它们在 HTML 中创建目录。我记得我做过一次这样的例子,现在找不到了。我想我删除了它,因为太多人抱怨 "it didn't work." 它曾经在每个人都使用 Adob​​e Reader 插件的日子里工作,但是现在,周围有太多的 PDF 查看器几乎没有人仍然在浏览器上下文中使用 Adob​​e Reader。