Java代码实现一个或多个合并生成打印一个完整的PDF,可以参考下面的代码:
public void createPdf(HttpServletResponse response) {
PdfReader reader1 = null;
PdfReader reader2 = null;
response.setContentType("application/pdf;");
try {
String flowId = "43776BCBB2AC40688A8B7A17339426E6";
FlowBean flow = flowService.getCropDocHeader(flowId);
CorporateTemplate pdf = new CorporateTemplate();
String fileName = flow.getApplyId() + ".pdf";
response.setHeader("Content-disposition", "filename=" + new String(fileName.getBytes("GBK"), "ISO8859-1"));
ByteArrayOutputStream out = new ByteArrayOutputStream();
pdf.print(out, flow, PrintType.ALL);
reader1 = new PdfReader(out.toByteArray());
reader2=new PdfReader(out.toByteArray());
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, response.getOutputStream());
document.open();
PdfContentByte cb = writer.getDirectContent();
int totalPages = 0;
totalPages += reader1.getNumberOfPages();
totalPages += reader2.getNumberOfPages();
List<PdfReader> readers = Lists.newArrayList();
readers.add(reader1);
readers.add(reader2);
int pageOfCurrentReaderPDF = 0;
Iterator<PdfReader> iteratorPDFReader = readers.iterator();
while (iteratorPDFReader.hasNext()) {
PdfReader pdfReader = iteratorPDFReader.next();
while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
document.newPage();
pageOfCurrentReaderPDF++;
PdfImportedPage page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
cb.addTemplate(page, 0, 0);
}
pageOfCurrentReaderPDF = 0;
}
document.close();
writer.close();
} catch (IOException | DocumentException e) {
e.printStackTrace();
}
}
此方法支持批量!试过的请点个赞,不懂可以留言。