extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/pdf/PdfToPdfCombiner.java

Code
Comments
Other
Rev Date Author Line
3788 17 Mar 16 nicklas 1 package net.sf.basedb.reggie.pdf;
3788 17 Mar 16 nicklas 2
3788 17 Mar 16 nicklas 3 import java.io.IOException;
3788 17 Mar 16 nicklas 4 import java.io.InputStream;
3788 17 Mar 16 nicklas 5
6060 17 Nov 20 nicklas 6 import com.itextpdf.kernel.pdf.PdfDocument;
6060 17 Nov 20 nicklas 7 import com.itextpdf.kernel.pdf.PdfReader;
6034 29 Oct 20 nicklas 8
6061 18 Nov 20 nicklas 9 import net.sf.basedb.reggie.pdf.PdfUtil7.Align;
6060 17 Nov 20 nicklas 10
6061 18 Nov 20 nicklas 11
3788 17 Mar 16 nicklas 12 /**
3788 17 Mar 16 nicklas 13   Combine PDF files info a multi-page PDF.
3788 17 Mar 16 nicklas 14   @since 4.3
3788 17 Mar 16 nicklas 15 */
3788 17 Mar 16 nicklas 16 public class PdfToPdfCombiner 
3788 17 Mar 16 nicklas 17   extends PdfCombiner
3788 17 Mar 16 nicklas 18 {
6060 17 Nov 20 nicklas 19   private PdfUtil7 pdfOut;
3788 17 Mar 16 nicklas 20   private String password;
6034 29 Oct 20 nicklas 21   private int totalPages;
3788 17 Mar 16 nicklas 22   
3788 17 Mar 16 nicklas 23   /**
3788 17 Mar 16 nicklas 24     Create a new combiner instance.
3788 17 Mar 16 nicklas 25     @param pdfOut The PDF file to write the output to
3788 17 Mar 16 nicklas 26   */
6060 17 Nov 20 nicklas 27   public PdfToPdfCombiner(PdfUtil7 pdfOut) 
3788 17 Mar 16 nicklas 28   {
3788 17 Mar 16 nicklas 29     super("application/pdf", ".pdf");
3788 17 Mar 16 nicklas 30     this.pdfOut = pdfOut;
6034 29 Oct 20 nicklas 31     this.totalPages = 0;
3788 17 Mar 16 nicklas 32   }
3788 17 Mar 16 nicklas 33
3788 17 Mar 16 nicklas 34   @Override
3788 17 Mar 16 nicklas 35   public void close() 
3788 17 Mar 16 nicklas 36     throws IOException
3788 17 Mar 16 nicklas 37   {
3788 17 Mar 16 nicklas 38     pdfOut.close();
3788 17 Mar 16 nicklas 39     pdfOut = null;
3788 17 Mar 16 nicklas 40   }
3788 17 Mar 16 nicklas 41   
3788 17 Mar 16 nicklas 42   @Override
3788 17 Mar 16 nicklas 43   public boolean addFile(InputStream pdfIn, String pdfName) 
3788 17 Mar 16 nicklas 44     throws IOException
3788 17 Mar 16 nicklas 45   {
6034 29 Oct 20 nicklas 46     PdfReader reader = new PdfReader(pdfIn);
6060 17 Nov 20 nicklas 47     PdfDocument other = new PdfDocument(reader);
6060 17 Nov 20 nicklas 48     
6060 17 Nov 20 nicklas 49     int numPages = other.getNumberOfPages();
6034 29 Oct 20 nicklas 50     for (int pageNo = 1; pageNo <= numPages; pageNo++)
6034 29 Oct 20 nicklas 51     {
6034 29 Oct 20 nicklas 52       if (totalPages > 0) pdfOut.newPage();
6061 18 Nov 20 nicklas 53       pdfOut.importPdf(other, pageNo, 0, 0, Float.NaN, Float.NaN, Align.LEFT);
6034 29 Oct 20 nicklas 54       totalPages++;
6034 29 Oct 20 nicklas 55     }
6034 29 Oct 20 nicklas 56     // If there is an odd number of pages (3, 5, etc.) an extra blank page is inserted
6060 17 Nov 20 nicklas 57     if (numPages > 2 && numPages % 2 == 1) pdfOut.newPage();
3788 17 Mar 16 nicklas 58     return true;
3788 17 Mar 16 nicklas 59   }
3788 17 Mar 16 nicklas 60 }