我对解析pdf和fd有一些疑问:
- 使用的目的是什么
PDDocument.loadNonSeq
包含临时/临时文件的方法?
- 我有很大的 pdf,我需要解析它并获取文本内容。我使用
PDDocument.load()
PDFTextStripper逐页提取数据(pdfstripper 已经得到setStartPage(n)
,setEndPage(n)
其中 n=n+1 每页循环)。使用 loadNonSeq 代替加载对内存更有效吗?
例如
File pdfFile = new File("mypdf.pdf");
File tmp_file = new File("result.tmp");
PDDocument doc = PDDocument.loadNonSeq(pdfFile, new RandomAccessFile(tmp_file, READ_WRITE));
int index=1;
int numpages = doc.getNumberOfPages();
for (int index = 1; index <= numpages; index++){
PDFTextStripper stripper = new PDFTextStripper();
Writer destination = new StringWriter();
String xml="";
stripper.setStartPage(index);
stripper.setEndPage(index);
stripper.writeText(this.doc, destination);
.... //filtering text and then convert it in xml
}
此代码是否在正确的 loadNonSeq 使用之上,并且在没有大量内存的情况下每页阅读 PDF 页面是一种好习惯吗?我使用逐页阅读,因为我需要使用 DOM 内存在 XML 中编写文本(使用剥离技术,我决定为每个页面生成一个 XML)