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 2010/09/21 18:01:37 UTC
svn commit: r999475 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: cos/COSName.java
filter/FilterManager.java filter/JBIG2Filter.java
pdmodel/graphics/xobject/PDXObjectImage.java
Author: lehmi
Date: Tue Sep 21 16:01:36 2010
New Revision: 999475
URL: http://svn.apache.org/viewvc?rev=999475&view=rev
Log:
PDFBOX-81: added a JBIG2 filter as suggested by Kenneth Berland
Added:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java (with props)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=999475&r1=999474&r2=999475&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java Tue Sep 21 16:01:36 2010
@@ -530,6 +530,10 @@ public final class COSName extends COSBa
public static final COSName JAVA_SCRIPT = new COSName( "JavaScript" );
/**
+ * A common COSName value.
+ */
+ public static final COSName JBIG2_DECODE = new COSName( "JBIG2Decode" );
+ /**
* A common COSName value.
*/
public static final COSName JPX_DECODE = new COSName( "JPXDecode" );
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java?rev=999475&r1=999474&r2=999475&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java Tue Sep 21 16:01:36 2010
@@ -48,7 +48,8 @@ public class FilterManager
Filter runLengthFilter = new RunLengthDecodeFilter();
Filter cryptFilter = new CryptFilter();
Filter jpxFilter = new JPXFilter();
-
+ Filter jbig2Filter = new JBIG2Filter();
+
addFilter( COSName.FLATE_DECODE, flateFilter );
addFilter( COSName.FLATE_DECODE_ABBREVIATION, flateFilter );
addFilter( COSName.DCT_DECODE, dctFilter );
@@ -65,6 +66,7 @@ public class FilterManager
addFilter( COSName.RUN_LENGTH_DECODE_ABBREVIATION, runLengthFilter );
addFilter( COSName.CRYPT, cryptFilter );
addFilter( COSName.JPX_DECODE, jpxFilter );
+ addFilter( COSName.JBIG2_DECODE, jbig2Filter );
}
Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java?rev=999475&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java Tue Sep 21 16:01:36 2010
@@ -0,0 +1,60 @@
+package org.apache.pdfbox.filter;
+
+import java.awt.image.BufferedImage;
+import java.awt.image.DataBuffer;
+import java.awt.image.DataBufferByte;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import javax.imageio.ImageIO;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.pdfbox.cos.COSDictionary;
+
+/**
+ * Modeled on the JBIG2Decode filter.
+ *
+ * thanks to Timo Böhme <ti...@ontochem.com>
+ */
+
+public class JBIG2Filter implements Filter
+{
+
+ /** Log instance */
+ private static final Log log = LogFactory.getLog(JBIG2Filter.class);
+
+ /**
+ * Decode JBIG2 data using Java ImageIO library.
+ *
+ * {@inheritDoc}
+ *
+ */
+ public void decode( InputStream compressedData, OutputStream result, COSDictionary options, int filterIndex )
+ throws IOException
+ {
+ BufferedImage bi = ImageIO.read( compressedData );
+ if ( bi != null )
+ {
+ DataBuffer dBuf = bi.getData().getDataBuffer();
+ if ( dBuf.getDataType() == DataBuffer.TYPE_BYTE )
+ {
+ result.write( ( ( DataBufferByte ) dBuf ).getData() );
+ }
+ else
+ {
+ log.error( "Image data buffer not of type byte but type " + dBuf.getDataType() );
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void encode( InputStream rawData, OutputStream result, COSDictionary options, int filterIndex )
+ throws IOException
+ {
+ System.err.println( "Warning: JBIG2.encode is not implemented yet, skipping this stream." );
+ }
+}
Propchange: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=999475&r1=999474&r2=999475&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java Tue Sep 21 16:01:36 2010
@@ -268,6 +268,14 @@ file.
log.info("About to return NULL from CCITT branch");
}
}
+ else if( COSName.JBIG2_DECODE.equals( filter ) )
+ {
+ retval = new PDDeviceGray();
+ if (retval == null)
+ {
+ log.info("About to return NULL from JBIG2 branch");
+ }
+ }
else if (getImageMask())
{
//Stencil Mask branch. Section 4.8.5 of the reference, page 350 in version 1.7.