需要引用如下包
<dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.3</version><type>pom</type></dependency>
1、预先准备一个pdf模板,并在指定位置添加表单域。如果不知道如何添加表单域自行百度搜索。将制作好的pdf文件保存在指定目录下。图片中需要填充的地方颜色不一样就是添加了"表单域"。每一个表单域都一个名字,图片上是看不出来的。在编辑pdf添加表单域的时候就会有让修改,默认text1。
例如:
2、上代码
//windows 系统字体路径private static final String FONT_PATH = "C:\\Windows\\Fonts\\simsun.ttc,0";//制作好的pdf模板文件存放路径private static final String TEMP_PATH = "template.pdf";// 文件输出路径private static final String DEST = "D:\\pdf\\after.pdf";public static void main(String[] args) throws IOException {fillPdfFile();}/*** 使用pdf表单域填充内容到指定位置*/public static void fillPdfFile() {try {Map<String, String> map = new HashMap<>(10);map.put("text1", "中华人民共和国");PdfDocument pdfDocument = new PdfDocument(new PdfReader(TEMP_PATH), new PdfWriter(DEST));// 获取pdf表单PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDocument, false);//设置字体PdfFont font = PdfFontFactory.createFont(FONT_PATH);//背景色DeviceRgb color = new DeviceRgb(0, 0, 0);//遍历获取所有表单域,给对应的key上设置值for (Map.Entry<String, String> entry : map.entrySet()) {form.getAllFormFields().get(entry.getKey()).setValue(entry.getValue()).setColor(color).setFont(font);}//清除表单域form.flattenFields();pdfDocument.close();} catch (IOException e) {e.printStackTrace();}}