From 8e03110c67bef5d59151c02b9e9fa6864a572e1c Mon Sep 17 00:00:00 2001 From: Aaron Hagopian Date: Thu, 19 Dec 2024 06:30:20 -0700 Subject: [PATCH] Add method to merge PDF from InputStream source Introduced a new `addSource` method that accepts an `InputStream` as a parameter, enabling merging of PDFs directly from streams keeping the developer from having to understand the RandomAccessRead interfaces and use a common way of accessing file data. --- .../pdfbox/multipdf/PDFMergerUtility.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java index 05f865b4611..9db10e2707f 100644 --- a/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java +++ b/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java @@ -16,10 +16,7 @@ */ package org.apache.pdfbox.multipdf; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.OutputStream; +import java.io.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -43,6 +40,7 @@ import org.apache.pdfbox.cos.COSStream; import org.apache.pdfbox.io.IOUtils; import org.apache.pdfbox.io.RandomAccessRead; +import org.apache.pdfbox.io.RandomAccessReadBuffer; import org.apache.pdfbox.io.RandomAccessStreamCache.StreamCacheCreateFunction; import org.apache.pdfbox.pdfwriter.compress.CompressParameters; import org.apache.pdfbox.pdmodel.PDDocument; @@ -307,6 +305,18 @@ public void addSource(File source) throws FileNotFoundException sources.add(source); } + /** + * Add a source to the list of documents to merge. + * + * @param source InputStream representing source document + * + * @throws IOException If something went wrong while copying the data + */ + public void addSource(InputStream source) throws IOException + { + sources.add(new RandomAccessReadBuffer(source)); + } + /** * Add a source to the list of documents to merge. *