Author: tilman Date: Mon Jan 4 04:22:20 2021 New Revision: 1885091 URL: http://svn.apache.org/viewvc?rev=1885091&view=rev Log: PDFBOX-5067: allow the passing of a MemoryUsageSetting, as suggested by Ralf Hauser
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java?rev=1885091&r1=1885090&r2=1885091&view=diff ============================================================================== --- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java (original) +++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/digitalsignature/visible/PDVisibleSignDesigner.java Mon Jan 4 04:22:20 2021 @@ -29,6 +29,7 @@ import javax.imageio.ImageIO; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.Loader; +import org.apache.pdfbox.io.MemoryUsageSetting; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.common.PDRectangle; @@ -64,11 +65,27 @@ public class PDVisibleSignDesigner public PDVisibleSignDesigner(String filename, InputStream imageStream, int page) throws IOException { + this(filename, imageStream, page, MemoryUsageSetting.setupMainMemoryOnly()); + } + + /** + * Constructor. + * + * @param filename Path of the PDF file + * @param imageStream image as a stream + * @param page The 1-based page number for which the page size should be calculated. + * @param memoryUsageSetting if the file to be signed is big, use this to manage memory consumption + * @throws IOException + */ + public PDVisibleSignDesigner(String filename, InputStream imageStream, int page, + MemoryUsageSetting memoryUsageSetting) + throws IOException + { // set visible signature image Input stream readImageStream(imageStream); // calculate height and width of document page - calculatePageSizeFromFile(filename, page); + calculatePageSizeFromFile(filename, page, memoryUsageSetting); } /** @@ -166,7 +183,14 @@ public class PDVisibleSignDesigner private void calculatePageSizeFromFile(String filename, int page) throws IOException { - try (PDDocument document = Loader.loadPDF(new File(filename))) + MemoryUsageSetting memoryUsageSetting = MemoryUsageSetting.setupMainMemoryOnly(); + calculatePageSizeFromFile(filename, page, memoryUsageSetting); + } + + private void calculatePageSizeFromFile(String filename, int page, + MemoryUsageSetting memoryUsageSetting) throws IOException + { + try (PDDocument document = Loader.loadPDF(new File(filename), memoryUsageSetting)) { // calculate height and width of document page calculatePageSize(document, page);