JAVA开发功能实现:把PDF玩儿出花样,IText值得安利一下

IText是一个强大的PDF编程库,适用于Java和.NET。它可以用于PDF文档的创建、编辑和转换,如分页切割、合并、内容旋转等。尽管主要为英文,但其丰富的功能和易用性使其在PDF处理上颇具优势。此外,IText提供的pdf2Data框架支持智能数据提取,简化了从PDF中提取信息的过程。相比于其他库,IText在稳定性和成本效益方面表现优秀,是处理PDF任务的推荐选择。

IText是什么?

iText 7 Core可以被Java或.NET(C#)对PDF文档进行编程。
iText是一个通用的、可编程的和企业级的PDF解决方案,允许你将其功能嵌入到你自己的软件中,以实现数字化转型。
iText 7 Core以开放源码(AGPL)以及商业许可的形式提供。

虽然是开源但是也不代表完全免费,详情可搜索“AGPL协议”。

  • iText 7 Core (open source)
  • pdf2Data* (closed source)
  • pdfCalligraph (closed source)
  • pdfHTML* (open source)
  • pdfOCR (open source)
  • pdfRender (closed source)
  • pdfSweep (open source)
  • pdfXFA* (closed source)
  • pdfOptimizer (closed source)
  • pdfOffice (closed source)

总体而言对于PDF转office文档等操作是比较全的了,当然PDF转入转出的库也有不少,比如说Aspose和Spire.Office等。

举个栗子

当我们拿到了一份超级大的PDF产品手册时,按照整体内容交付业务貌似体验不佳,那么我们需要对PDF做按页切割,IText的DEMO板块为此提供了完整方案。

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.utils.PageRange;
import com.itextpdf.kernel.utils.PdfSplitter;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

public class PDFSplitter {
    private static final String ORIG = "/uploads/split.pdf";
    private static final String OUTPUT_FOLDER = "/myfiles/";


    public static void main(String args[]) throws IOException {
        final int maxPageCount = 2; // create a new PDF per 2 pages from the original file
        PdfDocument pdfDocument = new PdfDocument(new PdfReader(new File(ORIG)));
        PdfSplitter pdfSplitter = new PdfSplitter(pdfDocument) {
            int partNumber = 1;

            @Override
            protected PdfWriter getNextPdfWriter(PageRange documentPageRange) {
                try {
                    return new PdfWriter(OUTPUT_FOLDER + "splitDocument_" + partNumber++ + ".pdf");
                } catch (final FileNotFoundException ignored) {
                    throw new RuntimeException();
                }
            }
        };

        pdfSplitter.splitByPageCount(maxPageCount, (pdfDoc, pageRange) -> pdfDoc.close());
        pdfDocument.close();
    }
}

虽然IText没有考虑到中国人的阅读习惯(都是英文),但是对于开发者而言已经是很体贴了:

PDF分页切割、合并、内容旋转、分页删除、页面保护、密码消除、图片转换、HTML转PDF等常规操作文档支持很到位。

功能展示

同时,IText提供了一个框架,根据您在模板中定义的选择规则,智能地识别PDF文档中的数据。这与基于人工智能的替代方案相比具有显著的优势,后者需要大量的培训来识别文档:

第1步。上传一个PDF文件样本(这将成为识别模板)。
第2步。选择你想提取的文档中的数据,并定义相关的提取规则(选择器),以便正确提取数据。
第3步。上传基于同一模板的任何其他PDF文档,并确认你的数据被正确识别。
第4步。开始在pdf2Data服务器端组件中使用该模板。您可以将它作为一个Java或.NET库集成到您的文档工作流程中,或者作为一个命令行应用程序,使您能够轻松地处理潜在的数百万份文档。

推荐理由

 

虽然很多库都能帮我们实现PDF的转换,作为编程人员第一要考虑的是产品稳定性和易用性,这作为后续支持和产品学习的一个保证。

而作为项目管理人员需要考虑到成本问题(当然学习成本也是成本),而IText同时满足了以上问题。

总结

“好库”!IText总体而言对开发者友好、功能实现较全、商用没有太多的“增值服务”抬高成本,对专门处理PDF的单一平台而言值得推荐。

当然国产的Spire.Office同样值得推荐,感兴趣的朋友可以点击这里了解一下


Myeclipse中文网持续分享有实践意义的功能实现工具,欢迎网友们持续关注咯。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Daneas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值