PDF合并

本文介绍了一个使用Java实现的批量合并PDF文件的方法。通过创建多个PdfReader实例并将它们的内容合并到一个Document对象中,最终生成一个完整的PDF文件。该方法支持多个PDF文件的合并,并将所有页面内容整合到一个新的PDF中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

转载于:https://www.cnblogs.com/bin93/p/9728165.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值