记录下,忘记是谁的文章了,侵权请联系博主删除。
参考:https://blog.csdn.net/CSDN__FL/article/details/82870571
pom:
<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.11</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.itextpdf/itext-asian -->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
使用word转成PDF文件模板
使用 Adobe Acrobat Pro 打开文件【模板.pdf】
整体代码:
package com.mj.mifang.test.controller;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Controller;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
@Controller
public class Model {
// 利用模板生成pdf
public static void fillTemplate(Map<String,Object> o) {
// 模板路径
String templatePath = "C:/pdf/model.pdf";//原PDF模板
// 生成的新文件路径
String newPDFPath = "C:/pdf/aa.pdf";
PdfReader reader;
FileOutputStream out;
ByteArrayOutputStream bos;
PdfStamper stamper;
try { //↓↓↓↓↓这个是字体文件
BaseFont bf = BaseFont.createFont("C:/windows/fonts/simsun.ttc,1",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//用的是系统字体,此路径是系统路径,可网上自行下载字体类型
Font FontChinese = new Font(bf, 12f, Font.BOLD);
out = new FileOutputStream(newPDFPath);// 输出流
reader = new PdfReader(templatePath);// 读取pdf模板
bos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, bos);
AcroFields form = stamper.getAcroFields();
Map<String,String> datemap = (Map<String,String>)o.get("datemap");
form.addSubstitutionFont(bf);
for(String key : datemap.keySet()){
String value = datemap.get(key);
System.out.println(value+"*(*(*(**---:"+key);
form.setField(key,value);
}
stamper.setFormFlattening(true);// 如果为false,生成的PDF文件可以编辑,如果为true,生成的PDF文件不可以编辑
stamper.close();
Document doc = new Document(PageSize.A4, 0, 0, 0, 0);
Font font = new Font(bf, 32);
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
PdfImportedPage importPage = null;
///循环是处理成品只显示一页的问题
for (int i=1;i<=reader.getNumberOfPages();i++){
importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), i);
copy.addPage(importPage);
}
doc.close();
System.err.println("生成pdf文件完成!");
} catch (IOException e) {
System.out.println(e);
} catch (DocumentException e) {
System.out.println(e);
}
}
public static void main(String[] args) {
Map<String,String> map = new HashMap();
map.put("Text1","HT188888888888");//Text1 是PDF表单名称,有多少就添加多少
map.put("Text2","李四");//Text2 是PDF表单名称,有多少就添加多少
map.put("Text3","111111111111111111");//
map.put("Text4","188888888888");
map.put("Text5","王五");//
map.put("Text6","11111111111111111");//
map.put("Text7","188888888888");
map.put("Text8","111");//
map.put("Text9","2018-11-11");//
map.put("Text10","2018-11-18");
map.put("Text11","0.05");//
map.put("Text13","阿拉蕾");//
map.put("Text14","888.67");
map.put("Text15","李四");//
map.put("Text16","王五");
map.put("Text17","2018-11-11");//
Map<String,Object> o=new HashMap();
o.put("datemap",map);
//调用方法
fillTemplate(o);
}
}