使用itext7给pdf文件加背景

使用itext7给pdf添加背景

背景就是第一个元素 itext7没搞明白怎么设置图像层高 这个方法的核心思路就是新建一个页面 先把背景加上 再把要加背景的文档复制过去

 /**
     * 给pdf增加背景
    
     * @return
     * @throws Exception
     */
    public byte[] addBgToPDF()throws Exception{
        byte[] result = null;
        // 获取pdf地址
        String path = "";
        // 获取背景图 pdf
        String bgPath = "";
        // 获取pdf输入流
        InputStream fis = new BufferedInputStream(new FileInputStream(path));
        // 建立pdf输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        // 获取pdf
        PdfDocument pdfDoc = new PdfDocument(new PdfReader(fis)); // 待增加背景的pdf
        PdfDocument pdfOutDoc = new PdfDocument(new PdfWriter(baos)); // 增加后的pdf 进行输出
        // 获取背景
        PdfDocument bgDoc = new PdfDocument(new PdfReader(bgPath));
        PdfPage bgPage = bgDoc.getFirstPage();
        // 获取背景大小
        PageSize pageSize = pdfDoc.getDefaultPageSize();

        for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
            PdfPage pageIn = pdfDoc.getPage(i);

            // 创建一个新的 PDF 页面,并获取其画布
            PdfPage pageOut = pdfOutDoc.addNewPage(pageSize);
            PdfCanvas canvas = new PdfCanvas(pageOut);

            // 将背景图像绘制到新建的页面模板中
            canvas.addXObject(bgPage.copyAsFormXObject(pdfOutDoc), 0, 0);
            // 将原有 PDF 页面绘制到新的 PDF 页面上
            PdfFormXObject formXObject = pageIn.copyAsFormXObject(pdfOutDoc);
            canvas.addXObject(formXObject, 0, 0);

        }
        // 关闭输入和输出 PDF 文件
        pdfDoc.close();
        pdfOutDoc.close();
        bgDoc.close();

        result = baos.toByteArray();
        return result;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值