You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/03/26 07:42:33 UTC

svn commit: r1581708 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox: cos/COSName.java filter/CCITTFaxDecodeFilter.java filter/TIFFFaxDecoder.java

Author: tilman
Date: Wed Mar 26 06:42:33 2014
New Revision: 1581708

URL: http://svn.apache.org/r1581708
Log:
PDFBOX-1074: implemented EncodedByteAlign = true for T6decode

Modified:
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java
    pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=1581708&r1=1581707&r2=1581708&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java Wed Mar 26 06:42:33 2014
@@ -535,6 +535,10 @@ public final class COSName extends COSBa
     /**
      * A common COSName value.
      */
+    public static final COSName ENCODED_BYTE_ALIGN = new COSName("EncodedByteAlign");
+    /**
+     * A common COSName value.
+     */
     public static final COSName ENCODING = new COSName( "Encoding" );
     /**
      * A common COSName value.
@@ -562,6 +566,11 @@ public final class COSName extends COSBa
      * A common COSName value.
      */
     public static final COSName ENCRYPT_META_DATA = new COSName( "EncryptMetadata" );
+
+    /**
+     * A common COSName value.
+     */
+    public static final COSName END_OF_LINE = new COSName("EndOfLine");
     
     /**
      * A common COSName value.

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java?rev=1581708&r1=1581707&r2=1581708&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java Wed Mar 26 06:42:33 2014
@@ -102,6 +102,7 @@ public class CCITTFaxDecodeFilter implem
             rows = Math.max(rows, height);
         }
         int k = decodeParms.getInt(COSName.K, 0);
+        boolean encodedByteAlign = decodeParms.getBoolean(COSName.ENCODED_BYTE_ALIGN, false);        
         int arraySize = (cols + 7) / 8 * rows;
         TIFFFaxDecoder faxDecoder = new TIFFFaxDecoder(1, cols, rows);
         // TODO possible options??
@@ -123,7 +124,7 @@ public class CCITTFaxDecodeFilter implem
         else if (k < 0)
         {
             byte[] decompressed = new byte[arraySize];
-            faxDecoder.decodeT6(decompressed, compressed, 0, rows, tiffOptions);
+            faxDecoder.decodeT6(decompressed, compressed, 0, rows, tiffOptions, encodedByteAlign);
             result.write(decompressed);
         }
     }

Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java?rev=1581708&r1=1581707&r2=1581708&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java Wed Mar 26 06:42:33 2014
@@ -878,7 +878,8 @@ class TIFFFaxDecoder {
                                       byte[] compData,
                                       int startX,
                                       int height,
-                                      long tiffT6Options) {
+                                      long tiffT6Options,
+                                      boolean encodedByteAlign) {
         this.data = compData;
         compression = 4;
 
@@ -915,6 +916,11 @@ class TIFFFaxDecoder {
         int bitOffset;
 
         for (int lines = 0; lines < height; lines++) {
+            if (encodedByteAlign && bitPointer != 0)
+            {
+                bitPointer = 0;
+                bytePointer++;
+            }            
             // a0 has to be set just before the start of the scanline.
             a0 = -1;
             isWhite = true;