java使用itex读取pdf,并搜索关键字,为其盖章

导读:近期要做一个根据关键字定位pdf的盖章位置的相关需求,其中关键字可配置多个(包含pdf文档中可能不存在的关键字),当页面显示盖章完成时,打开pdf显示已经损坏。
排查后发现,当itext搜索的关键字在pdf文档中不存在时,就已经将结果返回到前台界面,这时itex读取的流还未关闭,导致pdf读取未结束,pdf文档才被损坏。
下面是读取pdf的操作,记录一下:
所需包: itext-2.06.jar itext-asian,jar itextpdf-5.4.0.jar


****搜索关键字操作:****
  /*sourcePDF: pdf的文档路径
  splitParentkeyValues[i]:关键字,其中对关键字进行特殊符号的过滤,不然会导致后面的匹配结果有误。*/
  matches = MatchItemUtil.matchPage(sourcePDF, splitParentkeyValues[i]);

/*找出关键字后,将要盖章的图片准确定位到关键字周围,也可以采用坐标的方MatchItem matchItem  = new MatchItem();
int pageNum = matches.get(j).getPageNum();
float pageWidth = reader.getPageSize(pageNum).getWidth();
float pageHeight = reader.getPageSize(pageNum).getHeight();
matchItem.setX(matches.get(j).getX()-splitParentkeyValues.length * 20);
matchItem.setY(matches.get(j).getY() - 150 / 1.527731f);
img.setAbsolutePosition(matchItem.getX(), matchItem.getY());// 位置
PdfContentByte over = stamp.getOverContent(pageNum);
over.addImage(img);
  1. //根据关键字和pdf路径,全文搜索关键字
    /**

    • 查找所有
    • @param fileName 文件路径
    • @param keyword 关键词
    • @return
    • @throws Exception
      */

    public static List matchPage(String fileName,String keyword) throws Exception {
    List items = new ArrayList();
    PdfReader reader = new PdfReader(fileName);
    int pageSize = reader.getNumberOfPages();
    fo

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值