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.