2012-05-14 49 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