[prev in list] [next in list] [prev in thread] [next in thread]
List: fop-cvs
Subject: svn commit: r1881059 - in /xmlgraphics/fop-pdf-images/trunk: src/java/org/apache/fop/render/pdf/pdfb
From: ssteiner () apache ! org
Date: 2020-08-21 14:25:38
Message-ID: 20200821142538.4A6BF17A110 () svn01-us-east ! apache ! org
[Download RAW message or body]
Author: ssteiner
Date: Fri Aug 21 14:25:37 2020
New Revision: 1881059
URL: http://svn.apache.org/viewvc?rev=1881059&view=rev
Log:
FOP-2965: Keep streams with DCT compression
Modified:
xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java
xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
Modified: xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/src/java/org/apache \
/fop/render/pdf/pdfbox/PDFCloner.java?rev=1881059&r1=1881058&r2=1881059&view=diff \
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java \
(original)
+++ xmlgraphics/fop-pdf-images/trunk/src/java/org/apache/fop/render/pdf/pdfbox/PDFCloner.java \
Fri Aug 21 14:25:37 2020 @@ -42,6 +42,7 @@ import org.apache.pdfbox.cos.COSString;
import org.apache.pdfbox.pdmodel.common.COSObjectable;
import org.apache.pdfbox.pdmodel.common.PDStream;
+import org.apache.fop.pdf.DCTFilter;
import org.apache.fop.pdf.PDFArray;
import org.apache.fop.pdf.PDFDictionary;
import org.apache.fop.pdf.PDFDocument;
@@ -174,7 +175,12 @@ public class PDFCloner {
private Object readCOSStream(COSStream originalStream, Object keyBase) throws \
IOException { InputStream in;
Set filter;
- if (adapter.pdfDoc.isEncryptionActive()
+ PDFStream stream = new PDFStream();
+ if (adapter.pdfDoc.isEncryptionActive() && \
originalStream.getItem(COSName.FILTER) == COSName.DCT_DECODE) { + \
stream.getFilterList().addFilter(new DCTFilter()); + in = \
originalStream.getFilteredStream(); + filter = Collections.EMPTY_SET;
+ } else if (adapter.pdfDoc.isEncryptionActive()
|| (originalStream.containsKey(COSName.DECODE_PARMS) && \
!originalStream.containsKey(COSName.FILTER))) { in = \
originalStream.getUnfilteredStream(); filter = adapter.FILTER_FILTER;
@@ -183,7 +189,7 @@ public class PDFCloner {
in = originalStream.getFilteredStream();
filter = Collections.EMPTY_SET;
}
- PDFStream stream = new PDFStream();
+
OutputStream out = stream.getBufferOutputStream();
if (originalStream.getItem(COSName.SUBTYPE) == COSName.FORM && \
adapter.uniqueName != null) {
PDFWriter writer = new PDFWriter(adapter.uniqueName, \
adapter.currentMCID);
Modified: xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop-pdf-images/trunk/test/java/org/apach \
e/fop/render/pdf/PDFBoxAdapterTestCase.java?rev=1881059&r1=1881058&r2=1881059&view=diff
==============================================================================
--- xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java \
(original)
+++ xmlgraphics/fop-pdf-images/trunk/test/java/org/apache/fop/render/pdf/PDFBoxAdapterTestCase.java \
Fri Aug 21 14:25:37 2020 @@ -75,6 +75,7 @@ import org.apache.fop.pdf.PDFAnnotList;
import org.apache.fop.pdf.PDFArray;
import org.apache.fop.pdf.PDFDictionary;
import org.apache.fop.pdf.PDFDocument;
+import org.apache.fop.pdf.PDFEncryptionParams;
import org.apache.fop.pdf.PDFFilterList;
import org.apache.fop.pdf.PDFFormXObject;
import org.apache.fop.pdf.PDFGState;
@@ -497,6 +498,17 @@ public class PDFBoxAdapterTestCase {
}
}
+ private void loadPage(PDFDocument pdfdoc, String src) throws IOException {
+ PDFPage pdfpage = getPDFPage(pdfdoc);
+ pdfdoc.assignObjectNumber(pdfpage);
+ pdfpage.setDocument(pdfdoc);
+ PDFBoxAdapter adapter = new PDFBoxAdapter(pdfpage, new HashMap(), new \
HashMap<Integer, PDFArray>()); + PDDocument doc = PDDocument.load(new \
File(src)); + PDPage page = doc.getPage(0);
+ adapter.createStreamFromPDFBoxPage(doc, page, "key", new AffineTransform(), \
null, new Rectangle()); + doc.close();
+ }
+
@Test
public void testPDFBoxImageHandler() throws Exception {
ImageInfo imgi = new ImageInfo("a", "b");
@@ -682,4 +694,14 @@ public class PDFBoxAdapterTestCase {
Assert.assertTrue(os.toString("UTF-8").contains("/F15106079 12 Tf"));
doc.close();
}
+
+ @Test
+ public void testDCTEncryption() throws IOException {
+ PDFDocument pdfdoc = new PDFDocument("");
+ pdfdoc.setEncryption(new PDFEncryptionParams());
+ loadPage(pdfdoc, IMAGE);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ pdfdoc.output(bos);
+ Assert.assertTrue(bos.toString("UTF-8").contains("/Filter /DCTDecode"));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic