工具用的:Adobe Acrobat Pro、idea、
查看生成的pdf文件工具是以下三个:2345看图王、WPS、谷歌浏览器
itext版本:5.4.3
<dependencies>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.3</version>
</dependency>
</dependencies>
下面是代码和截图
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
/**
* Created by wangpeng on 2018/02/01.
*/
public class pdf1 {
// 利用模板生成pdf
public static void pdfout(Map<String,Object> o) {
// 模板路径
String templatePath = "C:\\Users\\fu\\Desktop\\PDF\\运输合同.pdf";
// 生成的新文件路径
String newPDFPath = "E:\\xzd\\src\\main\\resources\\pdf\\ht.pdf";
PdfReader reader;
FileOutputStream out;
ByteArrayOutputStream bos;
PdfStamper stamper;
try {
BaseFont bf = BaseFont.createFont("C:/Users/fu/Downloads/simsunttc/simsun.ttc,1",BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font FontChinese = new Font(bf, 5, Font.NORMAL);
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);
form.setField(key,value);
}
stamper.setFormFlattening(true);// 如果为false,生成的PDF文件可以编辑,如果为true,生成的PDF文件不可以编辑
stamper.close();
Document doc = new Document();
Font font = new Font(bf, 32);
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);
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("contractNo","HT18858585858558");///添加合同编号
//添加公司名称
map.put("firstParty","李四四");//甲
//乙方公司名称
map.put("secondParty","张三三");//乙
//运费
map.put("contracttotal","750.00");
//结算方式
map.put("isOnlinePay","现金");
//结算周期
map.put("settlementperiod","3");
//参数列表
map.put("yunshushixiao","30");
map.put("lifang","3");
map.put("dun","10");
map.put("gongli","100");
map.put("youxiaoqi","3");
map.put("jiafangAddress","邯郸");
map.put("yifangAddress","石家庄");
map.put("jiafangPhone","123456");
map.put("yifangPhone","654321");
map.put("jiafangBake","1111111111111");
map.put("yifangBake","3333333333333");
Map<String,Object> o=new HashMap();
o.put("datemap",map);
pdfout(o);
}
}
刚开始好像没啥问题,但是过了几天不知道发生了什么,突然就只能显示一页了。就是生成的pdf文件,用什么工具打开都是只显示一页。
请大神赐教!