我使用imagemagick将PDF(由pdfLaTex生成)渲染为图像:
convert -density 120 test.pdf -trim test.png
然后我在HTML文件中使用此图像(为了在自己的wiki引擎中包含乳胶代码)。
但是,当然,PNG文件没有PDF文件包含的任何超链接。
是否有可能提取超链接的坐标和目标网址,以便我可以构建HTML image map?
如果它有所不同:我只需要外部(http://)超链接,没有PDF内部超链接。像pdftohtml
这样的基于文本的解决方案是不可接受的,因为PDF也包含图形和公式化。
答案 0 :(得分: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,因为这种处理通常会对渲染设备禁用,而渲染设备无法使用它。
答案 1 :(得分:0)
我的同事找到了一个很好的lib,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