**
首先 pom文件导入依赖
**
<!--导出PDF文件需要的依赖 pdf start-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<!--pdf end-->
**
写一个工具包
**
此包内写了两个方法 用于模板导出 和非模板导出
模板导出需要先做一个PDF表单 使用world做了模板以后 另存为PDF
然后使用Adobe Acrobat 进行添加表单 注意每个域的名字要与我们工具包里面的导出的名字相同
createPDF这个方法里面调用了下面的一些测试方法,测试方法 仅供参考
package com.example.house.SYSDBA.util;
import com.example.house.SYSDBA.entity.Product;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.List;
/**
* 这个工具类用于测试PDF的非模板导出,和多页使用一个模板
*/
@Component
public class DownPdf {
/**
* 用pdf模板生成多条内容
*/
public static void fillTemplate(List<Product> list,String newPDFPath) {
// 模板路径,此处放在了项目的static文件夹下面
String templatePath = "static/产品模板.pdf";
FileOutputStream out;
try {
out = new FileOutputStream(newPDFPath);// 输出流
Document doc = new Document();
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
// int count=0;
for (Product product : list) {
PdfReader reader = new PdfReader(templatePath);// 读取pdf模板
ByteArrayOutputStream bos;
PdfStamper stamper;
bos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, bos);
AcroFields form = stamper.getAcroFields();
form.setField("type",product.getType());
form.setField("price",product.getPrice()+"");
form.setField("amount",product.getAmount()+"");
form.setField("provider",product.getProvider());
form.setField("categoryId",product.getCategoryId()+"");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String gmtDate = dateFormat.format(product.getGmtDate());
String createDate = dateFormat.format(product.getCreateDate());
form.setField("gmtDate",gmtDate);
form.setField("createDate",createDate);
stamper.setFormFlattening(true);
stamper.close();
PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);
copy.addPage(importPage);
// count++;
// if (count == 10){
// break;
// }
}
doc.close();
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
/**
* 该方法用于非模板的导出PDF 里面可以调用下面的一些方法做测试,生成需要的文字,表格等
* @param filename
* @param products
* @throws IOException
* @throws DocumentException
*/
public static void createPDF(String filename, List<Product> products) throws IOException, DocumentException {
Document document = new Document(PageSize.A4);
//下面的结果没有生效 中文文字没出来
Font font = new Font(BaseFont.createFont("C://Windows//Fonts//simfang.ttf", BaseFont.IDENTITY_H,
BaseFont.NOT_EMBEDDED));
try {
PdfWriter.