java动态⽣成pdf⽂件的⽅法
java动态⽣成pdf⽂件
⽂章⽬录
前⾔
java开发过程中难免会遇到⽣成⽂件的需求,这⾥简单介绍⼀下关于pdf格式的⽂件的动态⽣成⽅法
⼀、⽣成pdf模板
既然要动态⽣成⽂件了,肯定要先设计模板,设置变量,如此才能进⾏下⼀步操作。
2.模板设计好之后就是进⾏设置变量了,在线⼯具和下载软件的⽅式都可以 介绍两种:
2.2⼯具下载 Adobe Acrobat Pro DC(⾮常友好了,⽽且设置各种字体、⼤⼩) 还有其他的很多在线⼯具和软件就不介绍了。⼆、使⽤步骤
1.使⽤jar包
⾃⾏下载,也可根据我最后提供的⽹址进⾏下载
iText-2.1.7.jar、itextasian-2.1.7.jar、itext-rtf-2.1.7.jar
或者通过maven引⼊
网络诊断
maven依赖:
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
</dependency>
<dependency>
<groupId>cn.lesper</groupId>
<artifactId>iTextAsian</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext-rtf</artifactId>
<version>2.1.7</version>
</dependency>
2.pdf实现⽅法
代码如下(⽰例):
stpackage.rvice;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import pdf.AcroFields;
import pdf.AcroFields;
import pdf.BaFont;糖尿病人食谱大全
import pdf.PdfReader;
import pdf.PdfStamper;
public class TestDemo {
整数除法的意义public static void main(String[] args) throws Exception {
export();
System.out.println("⽣成完成");
}
public static void export(){
try {
// pdf模板所在路径,就是⽹站制作好后下载的pdf模板路径
String fileName ="E:\\download.pdf";
PdfReader reader = new PdfReader(fileName);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper ps = new PdfStamper(reader, bos);
/
/ 使⽤中⽂字体
BaFont bf = ateFont("STSong-Light","UniGB-UCS2-H", BaFont.NOT_EMBEDDED); ArrayList<BaFont> fontList = new ArrayList<BaFont>();
fontList.add(bf);
AcroFields fields = ps.getAcroFields();
fields.tSubstitutionFonts(fontList);
fillData(fields,data());
//必须要调⽤这个,否则⽂档会出现你不想出现的东西
ps.tFormFlattening(true);
ps.clo();
//⽣成pdf路径存放的路径
OutputStream fos = new FileOutputStream("D:/result.pdf");
白白操在线视频fos.ByteArray());
fos.flush();
fos.clo();
bos.clo();
}catch (Exception e){
e.printStackTrace();
}
}
/**
* 填充模板中的数据
*/
劳务派遣员工public static void fillData(AcroFields fields, Map<String, String> data){
try {
for(String key : data.keySet()){
String value = (key);
// 为字段赋值,注意字段名称是区分⼤⼩写的
fields.tField(key, value);
}
} catch (Exception e){
e.printStackTrace();
服怎么组词}
含有数字的诗句}
/
**
* 填充数据源
* 其中data存放的key值与pdf模板中的⽂本域值相对应
*/
public static Map<String, String>data(){
Map<String, String> data = new HashMap<String, String>();
data.put("reqName","申请⼈");
夸女友
data.put("reqDept","申请部门");
data.put("reqDept","申请部门");
return data;
}
}
总结
以上便是动态⽣成pdf⽂件的⽅法啦,并不是很复杂,只是在设置字体上耽误了不少时间。
我的功能要⽐这个复杂⼀些,是将模板放置在项⽬中,然后通过浏览器的⽅式下载。也遇到不少问题:⽐如pdf模板编译后损坏、下载后显⽰空⽩但通过pdf⼯具可以查看等。所幸都解决了,有兴趣的⼩伙伴可以等待我的更新哟。