Search in sources :

Example 1 with PDFMergerUtility

use of org.apache.pdfbox.multipdf.PDFMergerUtility in project pdfbox by apache.

the class PDFMerger method merge.

private void merge(String[] args) throws IOException {
    int firstFileArgPos = 0;
    if (args.length - firstFileArgPos < 3) {
        usage();
    }
    PDFMergerUtility merger = new PDFMergerUtility();
    for (int i = firstFileArgPos; i < args.length - 1; i++) {
        String sourceFileName = args[i];
        merger.addSource(sourceFileName);
    }
    String destinationFileName = args[args.length - 1];
    merger.setDestinationFileName(destinationFileName);
    merger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
}
Also used : PDFMergerUtility(org.apache.pdfbox.multipdf.PDFMergerUtility)

Example 2 with PDFMergerUtility

use of org.apache.pdfbox.multipdf.PDFMergerUtility in project pdfbox by apache.

the class PDFMergerExample method createPDFMergerUtility.

private PDFMergerUtility createPDFMergerUtility(List<InputStream> sources, ByteArrayOutputStream mergedPDFOutputStream) {
    LOG.info("Initialising PDF merge utility");
    PDFMergerUtility pdfMerger = new PDFMergerUtility();
    pdfMerger.addSources(sources);
    pdfMerger.setDestinationStream(mergedPDFOutputStream);
    return pdfMerger;
}
Also used : PDFMergerUtility(org.apache.pdfbox.multipdf.PDFMergerUtility)

Example 3 with PDFMergerUtility

use of org.apache.pdfbox.multipdf.PDFMergerUtility in project pdfbox by apache.

the class PDFMerger method call.

public Integer call() {
    PDFMergerUtility merger = new PDFMergerUtility();
    try {
        for (File infile : infiles) {
            merger.addSource(infile);
        }
        merger.setDestinationFileName(outfile.getAbsolutePath());
        merger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
    } catch (IOException ioe) {
        SYSERR.println("Error merging documents [" + ioe.getClass().getSimpleName() + "]: " + ioe.getMessage());
        return 4;
    }
    return 0;
}
Also used : PDFMergerUtility(org.apache.pdfbox.multipdf.PDFMergerUtility) IOException(java.io.IOException) File(java.io.File)

Example 4 with PDFMergerUtility

use of org.apache.pdfbox.multipdf.PDFMergerUtility in project tess4j by nguyenq.

the class PdfBoxUtilities method mergePdf.

/**
 * Merges PDF files.
 *
 * @param inputPdfFiles array of input files
 * @param outputPdfFile output file
 */
public static void mergePdf(File[] inputPdfFiles, File outputPdfFile) {
    try {
        PDFMergerUtility mergerUtility = new PDFMergerUtility();
        mergerUtility.setDestinationFileName(outputPdfFile.getPath());
        for (File inputPdfFile : inputPdfFiles) {
            mergerUtility.addSource(inputPdfFile);
        }
        mergerUtility.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
    } catch (IOException ioe) {
        logger.error("Error counting PDF pages => " + ioe);
    }
}
Also used : PDFMergerUtility(org.apache.pdfbox.multipdf.PDFMergerUtility) IOException(java.io.IOException) File(java.io.File)

Example 5 with PDFMergerUtility

use of org.apache.pdfbox.multipdf.PDFMergerUtility in project pdfbox by apache.

the class PDFMergerExample method merge.

/**
 * Creates a compound PDF document from a list of input documents.
 * <p>
 * The merged document is PDF/A-1b compliant, provided the source documents are as well. It
 * contains document properties title, creator and subject, currently hard-coded.
 *
 * @param sources list of source PDF document streams.
 * @return compound PDF document as a readable input stream.
 * @throws IOException if anything goes wrong during PDF merge.
 */
public InputStream merge(final List<InputStream> sources) throws IOException {
    String title = "My title";
    String creator = "Alexander Kriegisch";
    String subject = "Subject with umlauts ÄÖÜ";
    try (COSStream cosStream = new COSStream();
        ByteArrayOutputStream mergedPDFOutputStream = new ByteArrayOutputStream()) {
        // If you're merging in a servlet, you can modify this example to use the outputStream only
        // as the response as shown here: http://stackoverflow.com/a/36894346/535646
        PDFMergerUtility pdfMerger = createPDFMergerUtility(sources, mergedPDFOutputStream);
        // PDF and XMP properties must be identical, otherwise document is not PDF/A compliant
        PDDocumentInformation pdfDocumentInfo = createPDFDocumentInfo(title, creator, subject);
        PDMetadata xmpMetadata = createXMPMetadata(cosStream, title, creator, subject);
        pdfMerger.setDestinationDocumentInformation(pdfDocumentInfo);
        pdfMerger.setDestinationMetadata(xmpMetadata);
        LOG.info("Merging " + sources.size() + " source documents into one PDF");
        pdfMerger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
        LOG.info("PDF merge successful, size = {" + mergedPDFOutputStream.size() + "} bytes");
        return new ByteArrayInputStream(mergedPDFOutputStream.toByteArray());
    } catch (BadFieldValueException | TransformerException e) {
        throw new IOException("PDF merge problem", e);
    } finally {
        sources.forEach(IOUtils::closeQuietly);
    }
}
Also used : COSStream(org.apache.pdfbox.cos.COSStream) BadFieldValueException(org.apache.xmpbox.type.BadFieldValueException) IOUtils(org.apache.pdfbox.io.IOUtils) ByteArrayInputStream(java.io.ByteArrayInputStream) PDFMergerUtility(org.apache.pdfbox.multipdf.PDFMergerUtility) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PDMetadata(org.apache.pdfbox.pdmodel.common.PDMetadata) IOException(java.io.IOException) PDDocumentInformation(org.apache.pdfbox.pdmodel.PDDocumentInformation) TransformerException(javax.xml.transform.TransformerException)

Aggregations

PDFMergerUtility (org.apache.pdfbox.multipdf.PDFMergerUtility)5 IOException (java.io.IOException)3 File (java.io.File)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 TransformerException (javax.xml.transform.TransformerException)1 COSStream (org.apache.pdfbox.cos.COSStream)1 IOUtils (org.apache.pdfbox.io.IOUtils)1 PDDocumentInformation (org.apache.pdfbox.pdmodel.PDDocumentInformation)1 PDMetadata (org.apache.pdfbox.pdmodel.common.PDMetadata)1 BadFieldValueException (org.apache.xmpbox.type.BadFieldValueException)1