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