java通过pdf-box插件完成对pdf文件中图片/文字的替换
创始人
2024-12-27 05:07:50
0

需要引入的Maven依赖:

                                e-iceblue                 spire.pdf.free                 5.1.0             

java代码:

   public AjaxResult replacepdf(MultipartFile file)  {         try {             //初始化 PdfDocument 类的实例             PdfDocument doc = new PdfDocument();             PdfDocument doc1 = null;             int fileType = 0;             doc.loadFromStream(file.getInputStream());                 //加载 PDF 文档                     //region 单页模板替换                     if (doc.getPages().getCount() <= 1) {                         //获取所需的页面                         PdfPageBase page = doc.getPages().get(0);                          //region 获取原图大小  位置                         PdfImageInfo[] imagesInfo = page.getImagesInfo();                         //获取指定图片的坐标                         Rectangle2D bounds = imagesInfo[imagesInfo.length - 1].getBounds();                         double x = bounds.getX();                         double y = bounds.getY();                         double width = bounds.getWidth();                         double height = bounds.getHeight();                         //endregion                         //替换公章                         PdfImage image2 = PdfImage.fromFile(uploadPath + "//zryk//zrykseal//img//zrykseal.jpg");                         page.deleteImage(imagesInfo.length - 1);                         page.getCanvas().drawImage(image2, x + 40, y, 87, 87);                         PdfImage image = PdfImage.fromFile(uploadPath + "//zryk//zryklogo//img//zryk.jpg");                         page.replaceImage(0, image);                     }                     //endregion                  //region 文字替换                 for (Object pageFonts : doc.getPages()) {                     PdfPageBase pageF = (PdfPageBase) pageFonts;                      //region 需要替换的文字信息                     String oldPhone = "xxxx-25689581";                     String newPhone = "xxxx-4523 2358";                     String oldPhone1 = "25569861";                     String newPhone1 = "55586662";                      PdfTextFindCollection collection = pageF.findText(oldPhone, false);                     PdfTextFindCollection collection1 = pageF.findText(oldPhone1, false);                     //endregion                      // 指定替换文本                     String newText = newPhone;                     String newText1 = newPhone1;                      //region 查找并替换文本1                     for (Object findObj : collection.getFinds()) {                         PdfTextFind find = (PdfTextFind) findObj;                         // 获取文本在页面中的范围                         Rectangle2D.Float rec = (Rectangle2D.Float) find.getBounds();                         // 写入空白范围遮住原来的文本                         pageF.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);                         PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 10f);// 创建字体                         pageF.getCanvas().drawString(newText, font, PdfBrushes.getBlack(), rec.getX(), rec.getY());                     }                     //endregion                      //region 查找并替换文本2                     for (Object findObj : collection1.getFinds()) {                         PdfTextFind find = (PdfTextFind) findObj;                         // 获取文本在页面中的范围                         Rectangle2D.Float rec = (Rectangle2D.Float) find.getBounds();                         // 写入空白范围遮住原来的文本                         pageF.getCanvas().drawRectangle(PdfBrushes.getWhite(), rec);                         PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 10f);// 创建字体                         pageF.getCanvas().drawString(newText1, font, PdfBrushes.getBlack(), rec.getX(), rec.getY());                     }                     //endregion                  }                 //endregion              return AjaxResult.success("上传成功");         }catch(Exception e){             return AjaxResult.error("上传失败,请联系管理员",JSON.toJSON(e.getStackTrace()));          }     }

相关内容

热门资讯

解迷一下!微信边锋辅助挂件,约... 您好,微信边锋辅助挂件这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩...
曝光一下!江西中至小程序黑科技... 曝光一下!江西中至小程序黑科技,竹间穿有挂没,原来是有挂(哔哩哔哩)1、每一步都需要思考,不同水平的...
推荐一下!丰城呱呱辅助器,友乐... 推荐一下!丰城呱呱辅助器,友乐广西app下载安装,总是真的是有挂(哔哩哔哩)在进入丰城呱呱辅助器软件...
推荐一下!家乡大贰祈福有用吗,... 推荐一下!家乡大贰祈福有用吗,中至赣州黑科技辅助软件,切实真的是有挂(哔哩哔哩)1)家乡大贰祈福有用...
有挂一下!微玩体育辅助器,we... 有挂一下!微玩体育辅助器,wepkerplus辅助,本来真的有挂(哔哩哔哩)微玩体育辅助器辅助器是一...
专业一下!九九联盟辅助神器,随... 专业一下!九九联盟辅助神器,随意玩俱乐部辅助,本来是真的有挂(哔哩哔哩)亲,关键说明,随意玩俱乐部辅...
解密一下!山西奇迹打锅子辅助,... 解密一下!山西奇迹打锅子辅助,新老夫子较二八年,果然真的是有挂(哔哩哔哩)1、打开软件启动之后找到中...
开挂一下!开心泉州小程序辅助哪... 开挂一下!开心泉州小程序辅助哪里查看,微信小游戏破解版,竟然真的有挂(哔哩哔哩)1、开心泉州小程序辅...
解迷一下!欢乐茶馆脚本辅助,四... 解迷一下!欢乐茶馆脚本辅助,四川家园辅助软件,本来存在有挂(哔哩哔哩)1、四川家园辅助软件辅助器安装...
科普一下!佛手在线辅助器苹果版... 科普一下!佛手在线辅助器苹果版,神殿娱乐控制系统,好像是真的有挂(哔哩哔哩)1、佛手在线辅助器苹果版...