Java将PDF输出为Excel

这篇博客分享了使用Java将PDF转换为Excel的过程,涉及PDFBox和jxl库。首先通过PDFBox将PDF转成txt,然后解析txt内容并利用jxl写入Excel。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间应需求写了一个将PDF输出为Excel的小程序,希望通过这篇博客给有同样需求的人一些思路。
首先用到的语言是Java,其中引入了一些对PDF和Excel进行操作的包,主要思路就是先将PDF输出为txt文件,然后再爬取txt中的关键字和数据,输出到Excel中。

下载PDFBox包

pdfbox-2.0.3.jar:http://apache.fayea.com/pdfbox/2.0.3/pdfbox-2.0.3.jar
(满足一般的PDF操作需求)
pdfbox-app-2.0.3.jar:http://apache.fayea.com/pdfbox/2.0.3/pdfbox-app-2.0.3.jar
(PDFbox的多个命令行的工具包)
fontbox-2.0.3.jar:http://apache.fayea.com/pdfbox/2.0.3/fontbox-2.0.3.jar
(PDF使用的字库包)

*为了方便一些对eclipse操作不熟练的同学,我简要介绍一下如何引入所需要的依赖包,大神可跳过。
右键项目->Build Path->Configure Build Path…->Add External JARs…
然后将你下好的jar包引入就可以了

话不多说直接上代码

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;

//将pdf文件输出为txt
    public static void PDFtoTXT(File pdf) {
        PDDocument pd;
        BufferedWriter wr;
        try {
            File input = pdf; 
            // The PDF file from where
            // you would like to
            // extract
            File output = new File(pdf.getName().split("\\.")[0] + ".txt");
            // The text file where
            // you are going to
            // store the
            // extracted data
            pd = PDDocument.load(input);
            pd.save("CopyOf" + pdf.getName().split("\\.")[0] + ".pdf"); // Creates a copy called
            // "CopyOfInvoice.pdf"
            PDFTextStripper stripper = new PDFTextStripper();
            wr = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(output)));
            stripper.writeText(pd, wr);
            if (pd != null) {
                pd.close();
            }
            // I use close() to flush the stream.
            wr.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

上述方法实现了将PDF文件输出为txt文件的功能

下面我们考虑如何从txt文件中抓出想要的关键字并输出到Excel中
这里需要引入另一个依赖包,这里可以选择的有jxl和POI
简要分析jxl和poi的优缺点:(数据来源:http://blog.youkuaiyun.com/jarvis_java/article/details/4924099

1、jxl

优点:
    -Jxl对中文支持非常好,操作简单,方法看名知意。
    -Jxl是纯javaAPI,在跨平台上表现的非常完美,代码可以再windows或者Linux上运行而无需重新编写
    -支持Excel 95-2000的所有版本(网上说目前可以支持Excel2007了,还没有尝试过)
    -生成Excel 2000标准格式
    -支持字体、数字、日期操作
    -能够修饰单元格属性
    -支持图像和图表,但是这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
缺点:效率低,图片支持不完善,对格式的支持不如POI强大

2、POI

优点:
    -效率高
    -支持公式,宏,一些企业应用上会非常实用
    -能够修饰单元格属性
    -支持字体、数字、日期操作
缺点:不成熟,代码不能跨平台,貌似不少同行在使用工程中还碰到让人郁闷的BUG(最近的项目中也是遇到了一些bug,不过目前没有查出来是代码的问题还是POI的问题,总之问题很诡异,数据替代参数总有失败的。关于不能跨平台这一说,我也没有试验过,不过Java不是跨平台吗?POI是JAVA的一个组件,怎么就不能跨平台了呢,总之这些问题还需要在以
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值