PDF动态插值生成PDF-PdfReader

本文介绍了如何使用AdobeAcrobat和iTextPDF库在PDF模板上插入数据,包括读取模板、设置字段值并最终生成包含填写内容的PDF文件的过程。
摘要由CSDN通过智能技术生成

1.首先需要使用Adobe Acrobat软件来对PDF进行处理,生成PDF模板。生成类似于下图的模板编辑框

2.使用PdfReader对模板文件流进行编辑。插入数据。示例代码如下

//POM 文件引入
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13.2</version>
        </dependency>

//java代码
package xxxxx;

import com.itextpdf.text.pdf.*;
import lombok.extern.slf4j.Slf4j;

import java.io.*;

@Slf4j
public class PDFInsertValueUtil {

    public static byte[] PDFInsertValue (String src,String value1,String value2) throws Exception {


        try {
            PDFInsertValueUtil pdfInsertValueUtil = new PDFInsertValueUtil();
            InputStream is = null;

            //linux
            String url = "config/static/pdf/" + src+".pdf";
            log.info("url : "+url);
            File file = new File(url);
            is = new FileInputStream(file);

            //window
            // is = pdfInsertValueUtil.getClass().getClassLoader().getResourceAsStream(
"static/pdf/"+src+".pdf");
            
            //因为window和linux静态文件存放的位置并不一定一致,所以这个获取路径的方法需要根据实际需求,来改变。
                      

            PdfReader reader = new PdfReader(is);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            PdfStamper stamper = new PdfStamper(reader, bos);
            AcroFields form = stamper.getAcroFields();

            form.setField("Key1", value1);
            form.setField("Key2", value2);



            stamper.setFormFlattening(true);// true时关闭pdf的表单编辑功能

//stamper.getAcroFields().setGenerateAppearances(true); //如果生成的pdf表单项无内容 打开这行代码
// 关闭表单编辑功能,必须GenerateAppearances = true后,生成出的pdf才会显示表单填写的内容
            stamper.close();
            bos.toByteArray();
            return bos.toByteArray();
        } catch (Exception e) {
            throw new RuntimeException(e.getMessage());
        }
//        throw new RuntimeException();
    }

}

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值