java生成和操作pdf表单

Java操作pdf分为三种情况:

  1. 读取pdf通过坐标进行填充数据,绘制成结果pdf。
  2. 通过Adobe Acrobat生成pdf form,通过Java设置form表单中的元素值进行数据填充。
  3. 通过itext绘制pdf。

优缺点:
第一种,格式和位置较灵活,难度中;
第二种,位置在模板pdf中固定,格式也不够灵活,难度小;
第三中,格式内容位置都灵活,难度大;

引入的jar包:

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.6</version>
</dependency>
<dependency>
    <groupId>com.itextpdf.tool</groupId>
    <artifactId>xmlworker</artifactId>
    <version>5.5.6</version>
</dependency>

第二种方式:
word制作报表样式–>转pdf–>acrobat设置pdf表单属性–>itext填充数据–>输出pdf
需要工具:excel/word , adobe acrobat Pro
1.使用word或excel绘制好想要的图形后点击另存为pdf

2.使用adobe acrobat Pro打开pdf,点击如图表单按键,选择添加或编辑域。
这里写图片描述

3.进入如图所示界面,可以对每个域进行命名、字体等属性的设置
这里写图片描述

  1. Java操作pdf
    PdfReader reader = new PdfReader("D:\\shouju.pdf");
      ByteArrayOutputStream bos = new ByteArrayOutputStream();
      PdfStamper ps = new PdfStamper(reader, bos);
      /**
       * 使用中文字体 使用 AcroFields填充值的不需要在程序中设置字体,在模板文件中设置字体为中文字体 Adobe 宋体 std L
       */
      AcroFields s = ps.getAcroFields();
      //设置key-value值 
      //通过s.setFieldProperty("字段名", "textfont", BaseFont , null); 设置字段的格式或者在模板中修改样式
      s.setField("checkNo", "20161108");
      s.setField("info", "测试单位");
      s.setField("projectName_1", "测试项目");
      s.setField("num_1", "2");
      s.setField("bw_1", "1");
      s.setField("amount_1", "100000000");
      s.setField("total", "壹佰万整");
      s.setField("bz_1", "个");
      s.setField("SKR", "测试人");
      s.setField("SKDW", "测试单位");
      s.setField("year", "2016");
      s.setField("mouth", "11");
      s.setField("day", "08");
      // 如果为false那么生成的PDF文件还能编辑,一定要设为true
      ps.setFormFlattening(true);
      ps.close();
      FileOutputStream fos = new FileOutputStream("d:\\shouju_fb.pdf");
      fos.write(bos.toByteArray());

结果如图:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u011391773/article/details/53084231