java使用itext填充pdf模板,超简单教学,有手就行

java使用itext填充pdf模板

  • 1、先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线
  • 2、将Word另存为pdf
  • 3、打开电脑中的Adobe Acrobat pro DC(这个应该win10 都有,搜索一下就出来了),点击 文件→创建→创建表单
  • 4、然后导入刚刚生成的pdf
    • 会出来这个页面
    • 双击这个阴影部分,将名称改成你要设置的名称,后面要根据这个名称来给他赋值
    • 全部设置好以后就可以另存为了
  • 5、前期的pdf模板准备好了,就开始上代码!
    • 1、首先导入我们所需要的依赖
    • 2、上代码
    • 3、字体需要放在resources目录下
  • 6、开始测试
  • 7、看看效果
    • ok,非常完美!
      • 如果觉得这种pdf模板的方式不好,可以参考我的另一篇博文,可以不用设置pdf模板就直接生成pdf
      • itext5固定段落Paragraph,指定段落位置
    • 问题总结:

1、先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线

java使用itext填充pdf模板,超简单教学,有手就行_第1张图片

2、将Word另存为pdf

java使用itext填充pdf模板,超简单教学,有手就行_第2张图片

3、打开电脑中的Adobe Acrobat pro DC(这个应该win10 都有,搜索一下就出来了),点击 文件→创建→创建表单

java使用itext填充pdf模板,超简单教学,有手就行_第3张图片

4、然后导入刚刚生成的pdf

java使用itext填充pdf模板,超简单教学,有手就行_第4张图片

会出来这个页面

java使用itext填充pdf模板,超简单教学,有手就行_第5张图片

双击这个阴影部分,将名称改成你要设置的名称,后面要根据这个名称来给他赋值

java使用itext填充pdf模板,超简单教学,有手就行_第6张图片

全部设置好以后就可以另存为了

java使用itext填充pdf模板,超简单教学,有手就行_第7张图片
java使用itext填充pdf模板,超简单教学,有手就行_第8张图片

5、前期的pdf模板准备好了,就开始上代码!

1、首先导入我们所需要的依赖

<dependency>
           <groupId>com.itextpdf</groupId>
           <artifactId>itextpdf</artifactId>
           <version>5.5.13</version>
       </dependency>

2、上代码

package com.icaremgt.admin.test;

import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import org.junit.Test;

import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class TestPdf {
    @Test
    public void testPdf() {
        // 模板文件路径
        String inputFileName = "F:\\pdfWork\\1\\mytests.pdf";
        // 生成的文件路径
        String outputFileName = "F:\\pdfWork\\2\\test9.pdf";

        OutputStream os = null;
        PdfStamper ps = null;
        PdfReader reader = null;
        PdfStamper stamper = null;

        try {
            os = new FileOutputStream(new File(outputFileName));
            // 2 读入pdf表单
            reader = new PdfReader(inputFileName);
            // 3 根据表单生成一个新的pdf
            ps = new PdfStamper(reader, os);
            // 4 获取pdf表单
            AcroFields form = ps.getAcroFields();
            // 5给表单添加中文字体
            BaseFont bf = BaseFont.createFont("Font/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            form.addSubstitutionFont(bf);
            // 6查询数据================================================
            Map<String, Object> data = new HashMap<String, Object>();
            data.put("childrenName", "李四");
            data.put("gender", "男");
            data.put("year", "2021");
            data.put("month", "09");
            data.put("day", "23");
            data.put("userName", "张三");
            data.put("address", "河南省案发时发放手动阀是的");
            // 7遍历data 给pdf表单表格赋值
            for (String key : data.keySet()) {
                form.setField(key, data.get(key).toString());
            }
            ps.setFormFlattening(true);
            System.out.println("===============PDF导出成功=============");
        } catch (Exception e) {
            System.out.println("===============PDF导出失败=============");
            e.printStackTrace();
        } finally {
            try {
                ps.close();
                reader.close();
                os.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }


   
}

3、字体需要放在resources目录下

BaseFont bf = BaseFont.createFont("Font/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

这个SIMYOU.TTF就是字体 (字体下载地址)
java使用itext填充pdf模板,超简单教学,有手就行_第9张图片

6、开始测试

java使用itext填充pdf模板,超简单教学,有手就行_第10张图片
导出成功!
java使用itext填充pdf模板,超简单教学,有手就行_第11张图片

7、看看效果

java使用itext填充pdf模板,超简单教学,有手就行_第12张图片

ok,非常完美!

可以关注我,下一期讲java使用itext将图片放到pdf模板的指定位置

如果觉得这种pdf模板的方式不好,可以参考我的另一篇博文,可以不用设置pdf模板就直接生成pdf

java使用itext直接生成pdf,无需模板

itext5固定段落Paragraph,指定段落位置

itext5固定段落Paragraph,指定段落位置

问题总结:

@gao1123576431 这位老哥提出问题说赋值了,但是最后导出的PDF是没有值得,后来他给出了解决办法,引入itext-asian

<dependency>
     <groupId>com.itextpdf</groupId>
     <artifactId>itext-asian</artifactId>
     <version>5.2.0</version>
 </dependency>

你可能感兴趣的:(java,java,itext)