PDF合并

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();
  }
}

此方法支持批量!试过的请点个赞,不懂可以留言。

posted on 2018-09-30 10:01  程序员的成长之道  阅读(520)  评论(1)    收藏  举报

导航