PDFBox.是一個Open Source的Java PDF Library,可以利用它來協助處理PDF檔案的一些應用(用iText也是可行的,不過它好像不支援擷取純文字「iText in Action, pp. 576」),例如:擷取PDF檔案中的純文字、轉換PDF檔案到Image檔等等.. 諸如此類的應用。
而且「Lucene」就是用它來轉換PDF到純文字再進行索引的~
下述是擷取PDF檔案中的純文字:(FontBox-0.1.0-dev.jar、PDFBox-0.7.3.jar required!)
import java.io.IOException; import org.pdfbox.pdmodel.PDDocument; import org.pdfbox.util.PDFTextStripper; public class PDFTextExtractor { private PDDocument document; public String extractText(String file) throws IOException { document = PDDocument.load(file); PDFTextStripper stripper = new PDFTextStripper(); stripper.setStartPage(1); stripper.setEndPage(document.getNumberOfPages()); return stripper.getText(document); } public static void main(String[] args) { PDFTextExtractor extractor = new PDFTextExtractor(); try { String text = extractor.extractText("C:\\test.pdf"); System.out.println(text); }catch (IOException e) { e.printStackTrace(); } } }
相關資源
.PDF Reference and Adobe Extensions to the PDF Specification - PDF規格書
.Glyph & Cog: Text Extraction - 解釋為何擷取PDF中的純文字不是那麼容易
不好意思,可以跟您請教一下,如果PDF被加上密碼或限制編輯,請問有辦法可以可以取出純文字嗎?
2012-04-12 10:16:37
Dear zack,
理論上只要PDF檔案格式的內容沒有被加密的話,基本上應該都是能擷取的出來的,至於你所提到加上密碼或限制編輯的方式,我沒有實際測試過~ 也許你可以試著用上述的程式試試。
2012-04-12 20:19:02
Dear zack,
加密過的PDF無法提取
會出現錯
2012-04-23 11:58:44