2009年9月28日 星期一

用Java 將pdf轉成 image (part II)

這裡要來說一些我的使用心得,雖然有些套件可以成功的將pdf轉存成image,
但,遇上中文,似乎就束手無策了,上網google了好久,目前是一個無解的狀況,
或許,有哪位路人看到這篇,有解決的方法!非常感激。


方法一:尋找iText 是否有相關方法
目的: iText是否可以直接輸出 image
結果: 無相關函式
原因: iText很單純的只能將資料輸出成 PDF 和rtf (一種文字格式)的檔案,
也可將 xml和html 輸出成 PDF檔案。iText 方法未果。
==============================


方法二:尋找PDF相關套件
目的: 將pdf內容轉存成image
==============================
套件1. PDFRenderer.jar
==============================
結果: 可以將PDF轉成image,但會有中文失真問題
原因: 使用PDFRederner 有些PDF中文不會失真,有些PDF會失真,
不會失真的PDF是用latext產生的,字型都是自訂的。後來發現,
使用PDFRenderer可以把字抓到,但是在畫成image時,會失真。

嘗試解決方法:在產生iText時,把字體一併嵌入,可以解決此狀況?
結果:失敗。
==============================
套件2. PDFBox(version: PDFBox v0.7.3.jar)
==============================
結果: 程式執行不成功,會出現「type not implemented yet 」的錯誤訊息。
原因: 在執行時會出現「type not implemented yet 」的錯誤訊息,
原因出在 「convertToImage」這一行code,一開始看以為 讀取中文檔有問題,
嘗試的解決問題,並上網google,結果竟然是因為 PDFBox的convertToImage是在beta階段,
在jar檔底下是有convertToImage 這段code,但是在BufferedImage裏面 有一種type 還沒實作,
這個type在0.73版裡沒有被實作出來(目前則未有0.74版出來),所以,此問題目前無解。
==============================
套件3. XPDF.jar
==============================
結果: 不適用
原因: XPDF的功能為「從PDF把文字抓取出來另存文字檔」及
「從PDF把圖片抓取出來另存成圖檔」,無法把整頁的PDF轉為image。


以上。