当前位置:   article > 正文

使用pdf表单域填充pdf内容

使用pdf表单域填充pdf内容

需要引用如下包

  1. <dependency>
  2. <groupId>com.itextpdf</groupId>
  3. <artifactId>itext-core</artifactId>
  4. <version>8.0.3</version>
  5. <type>pom</type>
  6. </dependency>

1、预先准备一个pdf模板,并在指定位置添加表单域。如果不知道如何添加表单域自行百度搜索。将制作好的pdf文件保存在指定目录下。图片中需要填充的地方颜色不一样就是添加了"表单域"。每一个表单域都一个名字,图片上是看不出来的。在编辑pdf添加表单域的时候就会有让修改,默认text1。

例如:

2、上代码

  1. //windows 系统字体路径
  2. private static final String FONT_PATH = "C:\\Windows\\Fonts\\simsun.ttc,0";
  3. //制作好的pdf模板文件存放路径
  4. private static final String TEMP_PATH = "template.pdf";
  5. // 文件输出路径
  6. private static final String DEST = "D:\\pdf\\after.pdf";
  7. public static void main(String[] args) throws IOException {
  8. fillPdfFile();
  9. }
  10. /**
  11. * 使用pdf表单域填充内容到指定位置
  12. */
  13. public static void fillPdfFile() {
  14. try {
  15. Map<String, String> map = new HashMap<>(10);
  16. map.put("text1", "中华人民共和国");
  17. PdfDocument pdfDocument = new PdfDocument(new PdfReader(TEMP_PATH), new PdfWriter(DEST));
  18. // 获取pdf表单
  19. PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDocument, false);
  20. //设置字体
  21. PdfFont font = PdfFontFactory.createFont(FONT_PATH);
  22. //背景色
  23. DeviceRgb color = new DeviceRgb(0, 0, 0);
  24. //遍历获取所有表单域,给对应的key上设置值
  25. for (Map.Entry<String, String> entry : map.entrySet()) {
  26. form.getAllFormFields().get(entry.getKey()).setValue(entry.getValue()).setColor(color).setFont(font);
  27. }
  28. //清除表单域
  29. form.flattenFields();
  30. pdfDocument.close();
  31. } catch (IOException e) {
  32. e.printStackTrace();
  33. }
  34. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/330485?site
推荐阅读
相关标签
  

闽ICP备14008679号