Example usage for com.lowagie.text.pdf PdfException PdfException

List of usage examples for com.lowagie.text.pdf PdfException PdfException

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfException PdfException.

Prototype


PdfException(String message) 

Source Link

Document

Constructs a PdfException with a message.

Usage

From source file:com.jk.framework.pdf.PDFMergeUtil.java

License:Apache License

/**
 * Concat PD fs./*  w  w w  .  j  ava  2  s  . co  m*/
 *
 * @param pdfs
 *            the pdfs
 * @param outputStream
 *            the output stream
 * @param paginate
 *            the paginate
 * @throws PdfException
 *             the pdf exception
 */
// ////////////////////////////////////////////////////////////////
public static void concatPDFs(final List<InputStream> pdfs, final OutputStream outputStream,
        final boolean paginate) throws PdfException {
    final Document document = new Document();
    try {
        final List<PdfReader> readers = new ArrayList<PdfReader>();
        int totalPages = 0;
        final Iterator<InputStream> iteratorPDFs = pdfs.iterator();

        // Create Readers for the pdfs.
        while (iteratorPDFs.hasNext()) {
            final InputStream pdf = iteratorPDFs.next();
            final PdfReader pdfReader = new PdfReader(pdf);
            readers.add(pdfReader);
            totalPages += pdfReader.getNumberOfPages();
        }

        // Create a writer for the outputstream
        final PdfWriter writer = PdfWriter.getInstance(document, outputStream);

        document.open();

        // BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
        // BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        final PdfContentByte cb = writer.getDirectContent(); // Holds the
        // PDF
        // data

        PdfImportedPage page;
        int currentPageNumber = 0;
        int pageOfCurrentReaderPDF = 0;
        final Iterator<PdfReader> iteratorPDFReader = readers.iterator();

        // Loop through the PDF files and add to the output.
        while (iteratorPDFReader.hasNext()) {
            final PdfReader pdfReader = iteratorPDFReader.next();

            // Create a new page in the target for each source page.
            while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
                document.newPage();
                pageOfCurrentReaderPDF++;
                currentPageNumber++;
                page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
                cb.addTemplate(page, 0, 0);

                // Code for pagination.
                if (paginate) {
                    cb.beginText();
                    // cb.setFontAndSize(bf, 9);
                    cb.showTextAligned(PdfContentByte.ALIGN_CENTER,
                            "" + currentPageNumber + " of " + totalPages, 520, 5, 0);
                    cb.endText();
                }
            }
            pageOfCurrentReaderPDF = 0;
        }

        outputStream.flush();
        document.close();
        outputStream.close();
    } catch (final Exception e) {
        throw new PdfException(e);
    } finally {
        if (document.isOpen()) {
            document.close();
        }
        try {
            if (outputStream != null) {
                outputStream.close();
            }
        } catch (final IOException ioe) {
            ioe.printStackTrace();
        }
    }
}