/**
* 导出PDF
*/
private void exportPDF(List<Map<String, Object>> lists, HttpServletResponse response) {
// 获取模版
String filename = "zswd.pdf";
String filePath = inv.getRequest().getSession().getServletContext().getRealPath("/") + "template" + File.separator + "pdf" + File.separator + filename;
try {
Document doc = new Document();
response.setContentType("application/pdf;charset=utf-8");
response.addHeader("Content-Disposition", "attachment;filename=" + filename);
OutputStream out = response.getOutputStream();
Map<Object, Object> result = new HashMap<Object, Object>();
ByteArrayOutputStream[] baos = new ByteArrayOutputStream[lists.size()];
// 遍历数据
if (lists != null && lists.size() > 0) {
Map<String, Object> map_temp = null;
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
for (int i = 0; i < lists.size(); i++) {
map_temp = lists.get(i);
String wdnr = map_temp.get("wdnr").toString();
if (wdnr != null && !"".equals(wdnr)) {
wdnr = wdnr.substring(wdnr.indexOf("<p>"), wdnr.indexOf("</p>")).substring(3);
}
String wdbt = map_temp.get("wdbt").toString();
String wdzz = map_temp.get("wdzz").toString();
String scsj = map_temp.get("scsj").toString();
result.put("wdzz", wdzz);
result.put("wdbt", wdbt);
result.put("wdnr", wdnr);
result.put("scsj", scsj);
// 读取模板
PdfReader reader = new PdfReader(filePath);
baos[i] = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(reader, baos[i]);
AcroFields form = stamper.getAcroFields();
java.util.Iterator<String> it = form.getFields().keySet().iterator();
while (it.hasNext()) {
String name = it.next().toString();
form.setField(name, result.get(name) == null ? " " : result.get(name) + "");
}
stamper.setFormFlattening(true);
int pageNumber = 1;
Document document = new Document();
document.open();
document.newPage();
PdfContentByte over = stamper.getOverContent(pageNumber);
stamper.close();
}
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
for (int i = 0; i < baos.length; i++) {
PdfImportedPage page = copy.getImportedPage(new PdfReader(baos[i].toByteArray()), 1);
copy.addPage(page);
}
copy.close();
doc.close();
System.out.println("create pdf...END");
}
}
catch (Exception e) {
e.printStackTrace();
}
}