星期四, 12月 02, 2010

pdftotext win32

幫朋友試的,轉 pdf 為文字檔。本來是要用 pdfbox 跟 iTextSharp 的,無奈 pdfbox 編譯不出 .net 的 dll,而 iTextSharp 的 model 又太複雜。

Linux 下的 pdftotext 正巧是可以轉的,所以首要就先找 win32 版本的。pdftotext 由兩個套件提供,一個是 xpdf,另一個是 poppler,目前 ubuntu 預設是使用 poppler。但是 popper 卻沒有善心人事編譯出 win32 的版本,只有 xpdf 有 (gnuwin32提供)。

所以就先下載來安裝,裝完以後,就有 pdftotext 指令可用,但是轉換時,卻轉不出中文。參考 pdftotext 的使用說明,發現有 -enc 選項可用,但指定以後,卻會出現
Error: Couldn't find unicodeMap file for the 'cp950' encoding
Error: Couldn't get text encoding

看來是少了檔案。
xpdf 官方網頁上有提供 xpdf-chinese-traditional.tar.gz,印象中,linux 下使用時,通常也是要再額外安裝才可以看到中文。那麼,就下載來使用吧。下載以後,把檔案解開放到 C:\Program Files\GnuWin32\share\xpdf\chinese-traditional 下,然後修改 C:\Program Files\GnuWin32\etc\xpdfrc ,加上這幾行:
#----- begin Chinese Traditional support package (2004-jul-27)
cidToUnicode Adobe-CNS1 c:\progra~1\gnuwin32\share\xpdf\chinese-traditional\Adobe-CNS1.cidToUnicode
unicodeMap Big5 c:\progra~1\gnuwin32\share\xpdf\chinese-traditional\Big5.unicodeMap
unicodeMap Big5ascii c:\progra~1\gnuwin32\share\xpdf\chinese-traditional\Big5ascii.unicodeMap
cMapDir Adobe-CNS1 c:\progra~1\gnuwin32\share\xpdf\chinese-traditional\CMap
toUnicodeDir c:\progra~1\gnuwin32\share\xpdf\chinese-traditional\CMap
#----- end Chinese Traditional support package


這樣設定就完成了。
使用的時候就可以用 "c:\Program Files\GnuWin32\bin\pdftotext.exe" -cfg c:\progra~1\gnuwin32\e
tc\xpdfrc -enc Big5 your_file.pdf your_file.txt 來進行轉換了。

註:我是 xpdf 的 setup 檔來安裝,所以會裝到 c:\program files\gnuwin32 下,若你是用.zip檔,那麼路徑請自行調整。

沒有留言: