Re: [問題] PDFBox-讀取PDF
※ 引述《neewollaH (萬聖節)》之銘言:
: 可是我查到的資料都是將PDF轉成文字檔(.txt)
: 而不能直接放到JEditorPane裡面
可以轉成文字檔的話,過程中應該就已經抓出 pdf 中的文字了吧 !?
再把文字丟給 JEditorPane 就 ok 了
PDFBox 也沒有很熟,不過我所知道的
PDFTextStripper 就是用來處理你的需求
: 有沒有哪個方法是可以直接取得文字而不用產生文件呢?
提供參考:
import org.pdfbox.cos.COSDocument;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class PDFBoxExtractTxt {
private FileInputStream fis;
public PDFBoxExtractTxt(File file) {
try {
this.fis = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void printDocument() {
COSDocument cosDoc = null;
try {
PDFParser parser = new PDFParser(fis);
parser.parse();
cosDoc = parser.getDocument();
} catch (IOException e) {
closeCOSDocument(cosDoc);
System.out.println("Cannot parse PDF document: " +
e.getMessage());
}
// extract PDF document's textual content
String docText;
try {
PDFTextStripper stripper = new PDFTextStripper();
docText = stripper.getText(new PDDocument(cosDoc));
System.out.println("PDF Contents:\n" + docText);
} catch (IOException e) {
closeCOSDocument(cosDoc);
System.err.println("Cannot extract PDF document's textual
content: " + e.getMessage());
}
}
private void closeCOSDocument(COSDocument cosDoc) {
if (cosDoc != null) {
try {
cosDoc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
PDFBoxExtractTxt pdfBox = new PDFBoxExtractTxt(new File("XXX.pdf"));
pdfBox.printDocument();
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.134.142.111
※ 編輯: microtech 來自: 220.134.142.111 (01/27 14:25)
討論串 (同標題文章)