自学内容网 自学内容网

java通过pdf-box插件完成对pdf文件中图片/文字的替换

需要引入的Maven依赖:

  <!--    pdf替换图片    -->
            <dependency>
                <groupId>e-iceblue</groupId>
                <artifactId>spire.pdf.free</artifactId>
                <version>5.1.0</version>
            </dependency>

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()));

        }
    }


原文地址:https://blog.csdn.net/aaa58962458/article/details/140524684

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!