【问题标题】:Render PDF as image and extracting hyperlinks将 PDF 渲染为图像并提取超链接
【发布时间】:2012-05-22 10:36:05
【问题描述】:

我使用 imagemagick 将 PDF(由 pdfLaTex 生成)呈现为图像:

convert -density 120 test.pdf -trim test.png

然后我在 HTML 文件中使用此图像(以便在自己的 wiki 引擎中包含乳胶代码)。

当然,PNG 文件没有 PDF 文件包含的任何超链接。

是否也可以提取超链接的坐标和目标 URL,以便我可以构建 HTML image map

如果有所作为:我只需要外部 (http://) 超链接,不需要 PDF 内部超链接。像 pdftohtml 这样的基于文本的解决方案是不可接受的,因为 PDF 也包含图形和公式。

【问题讨论】:

  • 我有一个非常相似的案例。在 PDF 查看器(如 Acrobat read 或 evince)中查看文件时,我收到的 PDF 文件可能包含可单击(并打开网页)的超链接。我使用 Ghostscript 将 PDF 内容转换为位图图像,以便以后(预)在 web 应用程序中查看。我想在我的 web 应用程序上显示超链接及其各自的热点覆盖在图像上。为此,我需要从 PDF 中提取链接 url 和热点矩形。

标签: html pdf hyperlink imagemagick


【解决方案1】:

Imagemagick 使用 Ghostscript 将 PDF 文件呈现为图像。您还可以使用 Ghostscript 来提取链接注释。事实上,PDF 解释器已经为 pdfwrite 设备这样做了,因此它可以生成与原始文件具有相同超链接的 PDF 文件。

您需要进行少量 PostScript 编程,如果您需要更多详细信息,请告诉我。

在 gs/Resource/Init 文件 pdf_main.ps 包含 PDF 解释器的大部分内容。在那里你会发现这个:

  /Link {
    mark exch
    dup /BS knownoget { << exch { oforce } forall >> /BS exch 3 -1 roll } if
    dup /F knownoget { /F exch 3 -1 roll } if
    dup /C knownoget { /Color exch 3 -1 roll } if
    dup /Rect knownoget { /Rect exch 3 -1 roll } if
    dup /Border knownoget {
....
    } if
    { linkdest } stopped 

该代码处理链接注释(PDF 文件中的超链接)。您可以用 PostScript 代码替换“linkdest”以将数据写入文件,这将为您提供超链接。请注意,您还需要在命令行上设置 -dDOPDFMARKS,因为这种处理通常会被渲染设备禁用,而无法使用它。

【讨论】:

  • 谢谢。听起来有点工作。您有任何参考资料可以帮助我编写这样的程序吗?如果有帮助,我还可以输出一个 PS 文件,因为我的源是 LaTeX 代码。
  • 它都是 Ghostscript 特有的,所以没有真正的参考。这一切都与 GS PDF 解释器的工作方式有关。我已经编辑了我的答案以添加一些细节
  • @leemes。我有类似的要求。如果你完成了这个,请粘贴代码..
  • @Pearl 对不起,我没有这方面的任何消息。我没有实施它,因为与我最终得到的相比,(估计的)努力似乎太多了。 :( 但是如果有这方面的消息,请告诉我。谢谢。:)
【解决方案2】:

我的同事发现了一个不错的库,PDFMiner,其中包括一个 tools/dumppdf.py,它可以做很多事情,我需要什么,请参阅 http://www.unixuser.org/~euske/python/pdfminer/

还有另一个 SO 问题对此有答案,请参阅 Looking for a linux PDF library to extract annotations and images from a PDF 显然 Ruby 的 pdfreader 也这样做了 https://github.com/yob/pdf-reader

【讨论】:

  • 这会是您正在寻找的答案吗,@Pearl?
猜你喜欢
  • 2019-03-22
  • 1970-01-01
  • 2015-09-03
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2014-02-03
  • 1970-01-01
相关资源
最近更新 更多