关于PDFBox读PDF时抛出Can't Close Pdf 的问题解决

最近在用java做关于PDF的处理,具体用 Apache PDFBox包来处理。具体该包的类、方法等等可以参加官网。https://pdfbox.apache.org/

言归正传,PDFBox在处理PDF文件时很多人遇到了Can't Close PDF的问题,我们也遇到了,并且解决了。

最初我们的代码是:

if(isCurrentPage(tp)){
        FigureY= Fy-lastparagraphy;
        float WholeY= lasty-lastparagraphy;
        if((WholeY>=35||WholeY<=0))//判断是否截图中只有一行字
		
		public static void myStripper(String pdfPath){
		try {

			FileInputStream fis = new FileInputStream(pdfPath);

			PDFParser pp = new PDFParser(fis);
			pp.parse();			
         	fis.close();
		    TestPDFTextStripper sps = new TestPDFTextStripper();			
		    sps.setParentPath( pdfPath.substring(0, pdfPath.lastIndexOf("/")) );
			sps.setPdfName(pdfPath.substring(pdfPath.lastIndexOf("/")+1, pdfPath.lastIndexOf(".")));
		    sps.setPdfPath(pdfPath);
		    sps.getText(pp.getPDDocument());
			}catch (Exception e) {
				e.printStackTrace();
				System.out.print("error 4");
                      }
            }
		}

事实是,我们不能用parse()方法来打开PDF,应该用load,这样就不会有问题

public static void myStripper(String pdfPath){
try {
	KC_PDFFigureStripper stripper = new KC_PDFFigureStripper();      
	String textOfPdf;
	PDDocument doc = PDDocument.load(pdfPath);
	try {
		stripper.setParentPath( pdfPath.substring(0, pdfPath.lastIndexOf("/")) );
		stripper.setPdfName(pdfPath.substring(pdfPath.lastIndexOf("/")+1, pdfPath.lastIndexOf(".")));
		stripper.setPdfPath(pdfPath);
		textOfPdf = stripper.getText(doc);
		} finally {
			doc.close();
					}    
		} catch (Exception e) {
				e.printStackTrace();
				System.out.print("error 4");
	}
  }

这样就不会再报错误了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值