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