加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 性能iText vs.PdfBox

发布时间:2020-12-15 05:11:21 所属栏目:Java 来源:网络整理
导读:我正在尝试将pdf(我最喜欢的书籍Effective Java,如果它的问题)转换为文本,我检查了iText和Apache PdfBox.我发现性能有很大的不同:使用iText需要2:521,使用PdfBox:6:117. 如果我的代码为PdfBOx PDFTextStripper stripper = new PDFTextStripper();BUFFER.
我正在尝试将pdf(我最喜欢的书籍Effective Java,如果它的问题)转换为文本,我检查了iText和Apache PdfBox.我发现性能有很大的不同:使用iText需要2:521,使用PdfBox:6:117.
如果我的代码为PdfBOx

PDFTextStripper stripper = new PDFTextStripper();
BUFFER.append(stripper.getText(PDDocument.load(pdf)));

这是针对iText的

PdfReader reader = new PdfReader(pdf);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
  BUFFER.append(PdfTextExtractor.getTextFromPage(reader,i));
}

我的问题是性能取决于什么,有没有办法让PdfBox更快?或者只使用iText?你能解释一下策略如何影响绩效吗?

解决方法

My question is in what the performance depends,is there a way how to make PdfBox faster?

一个主要的区别是PDFBox总是按字形处理文本字形,而iText通常按块处理它的块(即文本绘制操作的单字符串参数);这大大减少了iText所需的资源.此外,面向事件的iText文本解析架构意味着资源负担比PDFBox低.并且PDFBox保留了较长时间可用于纯文本提取的严格要求的信息,从而花费更多资源.

但是库最初加载文档的方式也可能有所不同.在这里你可以试验一下,PDFBox不仅提供了多个PDDocument.load重载,还提供了一些PDDocument.loadNonSeq重载(实际上PDDocument.loadNonSeq正确读取文档,而PDDocument.load可能被欺骗以误解PDF).所有这些不同变体可能具有不同的运行时行为

more about how strategies affect performance?

iText带来了一种简单而更高级的文本提取策略.简单的假设页面内容流中的文本以阅读顺序显示,而更高级的文本排序.默认情况下,使用更高级的一个.因此,您可以通过使用简单的策略来加速iText甚至更多. PDFBox总是排序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读