private static void concatPDFs(List<String> pdfs, OutputStream outputStream, String tempDiv) {
   ByteArrayOutputStream byteStream = null;
   Document document = new Document();
   try {
     PdfCopy copy = new PdfCopy(document, outputStream);
     document.open();
     for (String pdf : pdfs) {
       String fileLocation = tempDiv + pdf;
       InputStream templateIs = new FileInputStream(fileLocation);
       PdfReader reader = new PdfReader(templateIs);
       byteStream = new ByteArrayOutputStream();
       PdfStamper stamper = new PdfStamper(reader, byteStream);
       stamper.setFreeTextFlattening(true);
       stamper.setFormFlattening(true);
       stamper.close();
       PdfReader pdfReader = new PdfReader(byteStream.toByteArray());
       for (int page = 0; page < pdfReader.getNumberOfPages(); ) {
         copy.addPage(copy.getImportedPage(pdfReader, ++page));
       }
       pdfReader.close();
       reader.close();
     }
     document.close();
     copy.close();
   } catch (Exception e) {
     logger.error(e, e);
   } finally {
     if (document.isOpen()) document.close();
     try {
       if (outputStream != null) outputStream.close();
     } catch (IOException ioe) {
       logger.error(ioe, ioe);
     }
   }
 }
Ejemplo n.º 2
0
  private static void merge(String output, Collection<Path> all) {

    try {
      Document document = new Document();

      PdfCopy copy = new PdfCopy(document, new FileOutputStream(output));
      document.open();

      PdfReader reader;
      int n;

      for (Path pathTemp : all) {

        if (pathTemp.toFile().getAbsolutePath().endsWith(".pdf")) {

          reader = new PdfReader(pathTemp.toFile().getAbsolutePath());

          n = reader.getNumberOfPages();
          for (int page = 0; page < n; ) {
            copy.addPage(copy.getImportedPage(reader, ++page));
          }
          copy.freeReader(reader);
          reader.close();
        }
      }
      document.close();

    } catch (Exception e) {
      System.out.println(e);
    }
  }