2012-05-14 48 views
3

我使用的ImageMagick来呈现PDF(由pdfLaTex生成)作为图像:渲染PDF作为图像和提取的超链接

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

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

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

是否有可能提取超链接的坐标和目标URL,因此我可以构建HTML image map

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

+0

我有一个非常相似的情况。在PDF查看器中查看文件时,我收到可能包含可点击的超链接(并打开网页)的PDF文件,如Acrobat读取或显示。我使用Ghostscript将PDF内容转换为位图图像,以便以后(预览)在Web应用程序中查看。我想在webapp上显示超链接和它们各自的热点覆盖在图像上。为此,我需要从PDF中提取链接网址和热点矩形。 –

回答

2

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,因为对于无法使用它的渲染设备通常禁用此类处理。

+0

谢谢。听起来像是一点工作。你有没有任何参考资料可以帮助我编写这样的程序?如果它有帮助,我也可以输出一个PS文件,因为我的源代码是LaTeX。 – leemes

+0

它的所有Ghostscript特定的,所以没有真正的参考。这将与GS PDF解释器的工作方式紧密相关。我编辑了我的答案,添加了一些细节 – KenS

+0

@leemes。我有类似的要求。如果你完成了这个,请粘贴代码.. – Pearl