Author: adam
Date: Tue Oct 12 00:26:16 2010
New Revision: 1021552

URL: http://svn.apache.org/viewvc?rev=1021552&view=rev
Log:
PDFBOX-99: Indexed color images have wrong colors after encryption

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java?rev=1021552&r1=1021551&r2=1021552&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/COSWriter.java 
Tue Oct 12 00:26:16 2010
@@ -903,7 +903,7 @@ public class COSWriter implements ICOSVi
         {
             if(willEncrypt)
             {
-                document.getSecurityHandler().decryptStream(
+                document.getSecurityHandler().encryptStream(
                     obj,
                     currentObjectKey.getNumber(),
                     currentObjectKey.getGeneration());

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java?rev=1021552&r1=1021551&r2=1021552&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/encryption/SecurityHandler.java
 Tue Oct 12 00:26:16 2010
@@ -293,6 +293,28 @@ public abstract class SecurityHandler
                                 encryptedStream,
                                 stream.createFilteredStream() );
     }
+    
+    /**
+     * This will encrypt a stream, but not the dictionary as the dictionary is
+     * encrypted by visitFromString() in COSWriter and we don't want to encrypt
+     * it twice.
+     *
+     * @param stream The stream to decrypt.
+     * @param objNum The object number.
+     * @param genNum The object generation number.
+     *
+     * @throws CryptographyException If there is an error getting the stream.
+     * @throws IOException If there is an error getting the stream data.
+     */
+    public void encryptStream( COSStream stream, long objNum, long genNum )
+        throws CryptographyException, IOException
+    {
+        InputStream encryptedStream = stream.getFilteredStream();
+        encryptData( objNum,
+                                genNum,
+                                encryptedStream,
+                                stream.createFilteredStream() );
+    }
 
     /**
      * This will decrypt a dictionary.


Reply via email to