You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2020/12/15 07:12:09 UTC

svn commit: r1884444 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/multipdf/ main/java/org/apache/pdfbox/pdmodel/ test/java/org/apache/pdfbox/pdfwriter/ test/java/org/apache/pdfbox/pdmodel/ test/java/org/apache/pdfbox/pdmodel/graphics/opti...

Author: lehmi
Date: Tue Dec 15 07:12:09 2020
New Revision: 1884444

URL: http://svn.apache.org/viewvc?rev=1884444&view=rev
Log:
PDFBOX-4952: merge save and saveCompressed methods, use compression by default, adjust tests

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java?rev=1884444&r1=1884443&r2=1884444&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/multipdf/PDFMergerUtility.java Tue Dec 15 07:12:09 2020
@@ -44,6 +44,7 @@ import org.apache.pdfbox.cos.COSObject;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.io.MemoryUsageSetting;
+import org.apache.pdfbox.pdfwriter.compress.CompressParameters;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentInformation;
@@ -335,17 +336,32 @@ public class PDFMergerUtility
      */
     public void mergeDocuments(MemoryUsageSetting memUsageSetting) throws IOException
     {
+        mergeDocuments(memUsageSetting, CompressParameters.DEFAULT_COMPRESSION);
+    }
+
+    /**
+     * Merge the list of source documents, saving the result in the destination file.
+     *
+     * @param memUsageSetting defines how memory is used for buffering PDF streams; in case of <code>null</code>
+     * unrestricted main memory is used
+     * @param compressParameters defines if compressed object streams are enabled
+     * 
+     * @throws IOException If there is an error saving the document.
+     */
+    public void mergeDocuments(MemoryUsageSetting memUsageSetting, CompressParameters compressParameters) throws IOException
+    {
         if (documentMergeMode == DocumentMergeMode.PDFBOX_LEGACY_MODE)
         {
-            legacyMergeDocuments(memUsageSetting);
+            legacyMergeDocuments(memUsageSetting, compressParameters);
         }
         else if (documentMergeMode == DocumentMergeMode.OPTIMIZE_RESOURCES_MODE)
         {
-            optimizedMergeDocuments(memUsageSetting);
+            optimizedMergeDocuments(memUsageSetting, compressParameters);
         }
     }
     
-    private void optimizedMergeDocuments(MemoryUsageSetting memUsageSetting) throws IOException
+    private void optimizedMergeDocuments(MemoryUsageSetting memUsageSetting,
+            CompressParameters compressParameters) throws IOException
     {
         try (PDDocument destination = new PDDocument(memUsageSetting))
         {
@@ -393,11 +409,11 @@ public class PDFMergerUtility
             
             if (destinationStream == null)
             {
-                destination.save(destinationFileName);
+                destination.save(destinationFileName, compressParameters);
             }
             else
             {
-                destination.save(destinationStream);
+                destination.save(destinationStream, compressParameters);
             }
         }
     }
@@ -412,7 +428,8 @@ public class PDFMergerUtility
      * 
      * @throws IOException If there is an error saving the document.
      */
-    private void legacyMergeDocuments(MemoryUsageSetting memUsageSetting) throws IOException
+    private void legacyMergeDocuments(MemoryUsageSetting memUsageSetting,
+            CompressParameters compressParameters) throws IOException
     {
         if (sources != null && !sources.isEmpty())
         {
@@ -456,11 +473,11 @@ public class PDFMergerUtility
                 
                 if (destinationStream == null)
                 {
-                    destination.save(destinationFileName);
+                    destination.save(destinationFileName, compressParameters);
                 }
                 else
                 {
-                    destination.save(destinationStream);
+                    destination.save(destinationStream, compressParameters);
                 }
             }
             finally

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java?rev=1884444&r1=1884443&r2=1884444&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java Tue Dec 15 07:12:09 2020
@@ -874,8 +874,9 @@ public class PDDocument implements Close
     {
         return fontsToSubset;
     }
+    
     /**
-     * Save the document to a file.
+     * Save the document to a file using default compression.
      * 
      * @param fileName The file to save as.
      *
@@ -887,7 +888,7 @@ public class PDDocument implements Close
     }
 
     /**
-     * Save the document to a file.
+     * Save the document to a file using default compression.
      * 
      * @param file The file to save as.
      *
@@ -895,7 +896,7 @@ public class PDDocument implements Close
      */
     public void save(File file) throws IOException
     {
-        save(new BufferedOutputStream(new FileOutputStream(file)));
+        save(file, CompressParameters.DEFAULT_COMPRESSION);
     }
 
     /**
@@ -908,30 +909,43 @@ public class PDDocument implements Close
      */
     public void save(OutputStream output) throws IOException
     {
-        saveCompressed(output, null);
+        save(output, CompressParameters.DEFAULT_COMPRESSION);
     }
 
     /**
-     * Compress the document and save it to a file.
+     * Save the document using the given compression.
      *
      * @param file The file to save as.
-     * @param parameters The parameters for the document's compression.
+     * @param compressParameters The parameters for the document's compression.
+     * @throws IOException if the output could not be written
+     */
+    public void save(File file, CompressParameters compressParameters) throws IOException
+    {
+        save(new BufferedOutputStream(new FileOutputStream(file)), compressParameters);
+    }
+
+    /**
+     * Save the document to a file using the given compression.
+     * 
+     * @param fileName The file to save as.
+     * @param compressParameters The parameters for the document's compression.
+     *
      * @throws IOException if the output could not be written
      */
-    public void saveCompressed(File file, CompressParameters parameters) throws IOException
+    public void save(String fileName, CompressParameters compressParameters) throws IOException
     {
-        saveCompressed(new BufferedOutputStream(new FileOutputStream(file)), parameters);
+        save(new File(fileName), compressParameters);
     }
 
     /**
-     * This will compress the document and save it to an output stream.
+     * Save the document using the given compression.
      *
      * @param output The stream to write to. It will be closed when done. It is recommended to wrap it in a
      * {@link java.io.BufferedOutputStream}, unless it is already buffered.
      * @param parameters The parameters for the document's compression.
      * @throws IOException if the output could not be written
      */
-    public void saveCompressed(OutputStream output, CompressParameters parameters)
+    public void save(OutputStream output, CompressParameters parameters)
             throws IOException
     {
         if (document.isClosed())

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java?rev=1884444&r1=1884443&r2=1884444&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdfwriter/COSDocumentCompressionTest.java Tue Dec 15 07:12:09 2020
@@ -18,7 +18,6 @@ package org.apache.pdfbox.pdfwriter;
 
 import org.apache.pdfbox.Loader;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.pdfwriter.compress.CompressParameters;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.PDPageContentStream;
@@ -69,7 +68,7 @@ class COSDocumentCompressionTest
         PDDocument document = Loader.loadPDF(source);
         try
         {
-            document.saveCompressed(target, new CompressParameters());
+            document.save(target);
         }
         finally
         {
@@ -144,7 +143,7 @@ class COSDocumentCompressionTest
         PDDocument document = Loader.loadPDF(source);
         try
         {
-            document.saveCompressed(target, new CompressParameters());
+            document.save(target);
         }
         finally
         {
@@ -188,7 +187,7 @@ class COSDocumentCompressionTest
         {
             document.protect(
                     new StandardProtectionPolicy("owner", "user", new AccessPermission(0)));
-            document.saveCompressed(target, new CompressParameters());
+            document.save(target);
         }
         finally
         {
@@ -233,7 +232,6 @@ class COSDocumentCompressionTest
             }
 
             document.save(target);
-            // document.saveCompressed(target, new CompressParameters());
         }
         catch (Throwable t)
         {

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java?rev=1884444&r1=1884443&r2=1884444&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java Tue Dec 15 07:12:09 2020
@@ -28,6 +28,7 @@ import java.util.Arrays;
 import java.util.Locale;
 
 import org.apache.pdfbox.Loader;
+import org.apache.pdfbox.pdfwriter.compress.CompressParameters;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNull;
@@ -65,7 +66,7 @@ class TestPDDocument
             document.addPage(new PDPage());
             // Save
             baos = new ByteArrayOutputStream();
-            document.save(baos);
+            document.save(baos, CompressParameters.NO_COMPRESSION);
         }
 
         // Verify content
@@ -94,7 +95,7 @@ class TestPDDocument
         try (PDDocument document = new PDDocument())
         {
             document.addPage(new PDPage());
-            document.save(targetFile);
+            document.save(targetFile, CompressParameters.NO_COMPRESSION);
         }
 
         // Verify content
@@ -165,7 +166,6 @@ class TestPDDocument
     void testDeleteBadFile() throws IOException
     {
         File f = new File(TESTRESULTSDIR, "testDeleteBadFile.pdf");
-        System.out.println("f: " + f.getAbsolutePath());
         try (PrintWriter pw = new PrintWriter(new FileOutputStream(f)))
         {
             pw.write("<script language='JavaScript'>");

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java?rev=1884444&r1=1884443&r2=1884444&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/optionalcontent/TestOptionalContentGroups.java Tue Dec 15 07:12:09 2020
@@ -71,8 +71,7 @@ class TestOptionalContentGroups
     @Test
     void testOCGGeneration() throws Exception
     {
-        PDDocument doc = new PDDocument();
-        try
+        try (PDDocument doc = new PDDocument())
         {
             //Create new page
             PDPage page = new PDPage();
@@ -152,10 +151,6 @@ class TestOptionalContentGroups
             File targetFile = new File(testResultsDir, "ocg-generation.pdf");
             doc.save(targetFile.getAbsolutePath());
         }
-        finally
-        {
-            doc.close();
-        }
     }
 
     /**
@@ -171,10 +166,9 @@ class TestOptionalContentGroups
             testOCGGeneration();
         }
 
-        PDDocument doc = Loader.loadPDF(pdfFile);
-        try
+        try (PDDocument doc = Loader.loadPDF(pdfFile))
         {
-            assertEquals(1.5f, doc.getVersion());
+            assertEquals(1.6f, doc.getVersion());
             PDDocumentCatalog catalog = doc.getDocumentCatalog();
 
             PDPage page = doc.getPage(0);
@@ -215,10 +209,6 @@ class TestOptionalContentGroups
             assertTrue(nameSet.contains("enabled"));
             assertTrue(nameSet.contains("disabled"));
         }
-        finally
-        {
-            doc.close();
-        }
     }
 
     @Test