话不多说直接上代码:
下面所需要的是maven依赖,使用最新版本的itextpdf
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.12</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>kernel</artifactId>
<version>7.1.12</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>layout</artifactId>
<version>7.1.12</version>
</dependency>
代码如下:
public class PdfUtil {
/**
*
* @param template pdf模板
* @param target pdf生成地址
* @param data 对应参数
* @throws IOException
*/
public static void out(File template, String target, Map<String, String> data) throws IOException {
assert template != null && template.exists();
PdfReader reader = new PdfReader(template);
PdfDocument document = new PdfDocument(reader, new PdfWriter(target));
PdfAcroForm form = PdfAcroForm.getAcroForm(document, true);
Map<String, PdfFormField> fieldMap = form.getFormFields();
PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", false);
fieldMap.forEach((key, field) -> {
if(data.containsKey(key)){
field.setValue(data.get(key)).setFont(font).setFontSize(10);
}
});
// 设置表单域不可编辑
form.flattenFields();
document.close();
reader.close();
}