IText使用 PDF模板生成PDF

  1. 项目中加入Maven依赖:

  com.itextpdf
  itextpdf
  5.5.6

  1. 创建PDFUtil工具类(可根据需要自行修改),如下:
    参数:
参数名 参数描述
fileName PDF模板名称
fontName 字体
data 数据(用于替换PDF模板中的变量)

返回值:ByteArrayOutputStream

  public class PdfUtil {
      public static ByteArrayOutputStream generatePdfStream(String fileName, String fontName, Map data) throws  Exception{
          PdfReader reader = new PdfReader(fileName);
          ByteArrayOutputStream bos = new ByteArrayOutputStream();
          /* 将要生成的目标PDF文件名称 */
          PdfStamper ps = new PdfStamper(reader, bos);
          PdfContentByte under = ps.getUnderContent(1);
          /* 使用中文字体 */
          BaseFont bf = BaseFont.createFont(fontName, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
          ArrayList fontList = new ArrayList();
          fontList.add(bf);
          /* 取出报表模板中的所有字段 */
          AcroFields fields = ps.getAcroFields();
          fields.setSubstitutionFonts(fontList);
          fillData(fields, data);
          /* 必须要调用这个,否则文档不会生成的 */
          ps.setFormFlattening(true);
          ps.close();
          return bos;
      }
  
      public static void fillData(AcroFields fields, Map data)
              throws IOException, DocumentException {
          for (String key : data.keySet()) {
              String value = data.get(key);
              fields.setField(key, value); // 为字段赋值,注意字段名称是区分大小写
          }
      }
  }

这种方法适用于PDF模板中的变量不多的情况,如果变量过多使用也不是很方便(编辑PDF模板推荐使用Adobe Acrobat Pro软件)。

你可能感兴趣的:(IText使用 PDF模板生成PDF)