pdf 加印章图片 附jar包

    public static void main(String[] args) {
        File file = new File("C:\\Users\\ZHOULIJIA\\Desktop\\QR-B.LA009-01 冷冻离心机使用和维护记录表1.3(1).docx");
        FileOutputStream os;
        File outFile = new File("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件.pdf");
        File hcFile = new File("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件s.pdf");
        File file2 = new File("xx.png");
        File file3 = new File("xXx.png");

       
        try {

            //转后pdf
            InputStream is = Files.newInputStream(outFile.toPath());


            //合成后的文件
            FileOutputStream outputStream = new FileOutputStream(hcFile);
            PdfReader reader = new PdfReader(is);
            PdfStamper stamper = new PdfStamper(reader, outputStream);

            //横竖版测试
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件.pdf");
            //获取第一页
            PdfPageBase page = pdf.getPages().get(0);
            //获取第一页页面宽度、高度
            float pointWidth = (float) page.getSize().getWidth();
            float pointHeight = (float) page.getSize().getHeight();


            //获取总页数
            PdfReader pdfReader = new PdfReader("C:\\Users\\ZHOULIJIA\\Desktop\\受控文件.pdf");
            int pdfPage = pdfReader.getNumberOfPages();
            for (int i = 1; i <= pdfPage ; i++) {
                //将签名图片放在pdf文件的每一页
                PdfContentByte over = stamper.getOverContent(i);
                //签名图片
                File file1 = new File("C:\\Users\\ZHOULIJIA\\Desktop\\电子签章-20231128\\电子签章-20231128\\作废xx.png");
                File file22 = new File("C:\\Users\\ZHOULIJIA\\Desktop\\电子签章-20231128\\电子签章-20231128\\受控文件xx.png");
                InputStream inputStreamss = new ByteArrayInputStream(FileUtils.readFileToByteArray(file1));
                InputStream inputStreamss2 = new ByteArrayInputStream(FileUtils.readFileToByteArray(file22));

                // 从输入流读取图片数据
                BufferedImage image = ImageIO.read(inputStreamss);
                BufferedImage image2 = ImageIO.read(inputStreamss2);
                ImageIO.write(image, "png", file2);
                ImageIO.write(image2, "png", file3);



                // inputStream  转 image
                Image contractSealImg = Image.getInstance("xx.png");
                Image contractSealImg2 = Image.getInstance("xXx.png");
                over.saveState();
                PdfGState pdfGState = new PdfGState();
                //给图片设置透明度
                pdfGState.setFillOpacity(1.0F);
                over.setGState(pdfGState);
                over.saveState();
                if(pointWidth>pointHeight){
                    contractSealImg.setAbsolutePosition(600, 500);  //设置图片位置
                    contractSealImg.scaleAbsolute(80, 30);  //设置图片大小

                    contractSealImg2.setAbsolutePosition(683, 500);
                    contractSealImg2.scaleAbsolute(80, 30);
                }else{
                    contractSealImg.setAbsolutePosition(400, 802);  //设置图片位置
                    contractSealImg.scaleAbsolute(80, 30);  //设置图片大小
                    contractSealImg2.setAbsolutePosition(483, 802);
                    contractSealImg2.scaleAbsolute(80, 30);
                }
                //将图片添加到pdf文件
                over.addImage(contractSealImg);
                over.addImage(contractSealImg2);
                over.restoreState();
            }

            stamper.close();
            reader.close();
            outputStream.close();
            is.close();
            pdfReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            outFile.delete();
            file2.delete();
            file3.delete();
        }
    }

jar:

http://链接: https://pan.baidu.com/s/1_aT8p7UVCa7KFrEJlKeqGA?pwd=uvhd 提取码: uvhd 复制这段内容后打开百度网盘手机App,操作更方便哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT周小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值