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/04 20:34:50 UTC
svn commit: r1574180 - in
/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter:
FilterManager.java JPXFilter.java
Author: tilman
Date: Tue Mar 4 19:34:50 2014
New Revision: 1574180
URL: http://svn.apache.org/r1574180
Log:
PDFBOX-52: use JPXFilter instead of DCTFilter
Modified:
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java?rev=1574180&r1=1574179&r2=1574180&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java Tue Mar 4 19:34:50 2014
@@ -32,7 +32,7 @@ import org.apache.pdfbox.cos.COSName;
*/
public class FilterManager
{
- private Map<COSName, Filter> filters = new HashMap<COSName, Filter>();
+ private final Map<COSName, Filter> filters = new HashMap<COSName, Filter>();
/**
* Constructor.
@@ -40,7 +40,6 @@ public class FilterManager
public FilterManager()
{
Filter flateFilter = new FlateFilter();
- Filter dctFilter = new DCTFilter();
Filter ccittFaxFilter = new CCITTFaxDecodeFilter();
Filter lzwFilter = new LZWFilter();
Filter asciiHexFilter = new ASCIIHexFilter();
@@ -52,8 +51,8 @@ public class FilterManager
addFilter( COSName.FLATE_DECODE, flateFilter );
addFilter( COSName.FLATE_DECODE_ABBREVIATION, flateFilter );
- addFilter( COSName.DCT_DECODE, dctFilter );
- addFilter( COSName.DCT_DECODE_ABBREVIATION, dctFilter );
+ addFilter( COSName.DCT_DECODE, jpxFilter);
+ addFilter( COSName.DCT_DECODE_ABBREVIATION, jpxFilter);
addFilter( COSName.CCITTFAX_DECODE, ccittFaxFilter );
addFilter( COSName.CCITTFAX_DECODE_ABBREVIATION, ccittFaxFilter );
addFilter( COSName.LZW_DECODE, lzwFilter );
@@ -66,8 +65,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 );
-
+ addFilter( COSName.JBIG2_DECODE, jbig2Filter );
}
/**
Modified: pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java?rev=1574180&r1=1574179&r2=1574180&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java Tue Mar 4 19:34:50 2014
@@ -69,7 +69,26 @@ public class JPXFilter implements Filter
options.setInt(COSName.BITS_PER_COMPONENT, colorModel.getPixelSize() / colorModel.getNumComponents());
options.setInt(COSName.HEIGHT, bi.getHeight());
options.setInt(COSName.WIDTH, bi.getWidth());
- result.write(((DataBufferByte) dBuf).getData());
+
+ if (bi.getType() == BufferedImage.TYPE_3BYTE_BGR)
+ {
+ // PDFBOX-52
+ byte[] byteBuffer = ((DataBufferByte) dBuf).getData();
+ for (int i = 0; i < byteBuffer.length; i += 3)
+ {
+ //BGR
+ //to
+ //RGB
+ byte tmp0 = byteBuffer[i];
+ byteBuffer[i] = byteBuffer[i + 2];
+ byteBuffer[i + 2] = tmp0;
+ }
+ result.write(byteBuffer);
+ }
+ else
+ {
+ result.write(((DataBufferByte) dBuf).getData());
+ }
}
else
{