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/05/15 18:31:09 UTC
svn commit: r1594969 - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter: DCTFilter.java
Filter.java JBIG2Filter.java JPXFilter.java
Author: tilman
Date: Thu May 15 16:31:08 2014
New Revision: 1594969
URL: http://svn.apache.org/r1594969
Log:
PDFBOX-2070: DRY refactoring
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java?rev=1594969&r1=1594968&r2=1594969&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java Thu May 15 16:31:08 2014
@@ -50,22 +50,7 @@ final class DCTFilter extends Filter
public final DecodeResult decode(InputStream encoded, OutputStream decoded,
COSDictionary parameters, int index) throws IOException
{
- // find suitable image reader
- Iterator readers = ImageIO.getImageReadersByFormatName("JPEG");
- ImageReader reader = null;
- while(readers.hasNext()) {
- reader = (ImageReader)readers.next();
- if(reader.canReadRaster()) {
- break;
- }
- }
-
- if (reader == null)
- {
- throw new MissingImageReaderException("Cannot read JPEG image: " +
- "a suitable JAI I/O image filter is not installed");
- }
-
+ ImageReader reader = findImageReader("JPEG", "a suitable JAI I/O image filter is not installed");
ImageInputStream iis = null;
try
{
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java?rev=1594969&r1=1594968&r2=1594969&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/Filter.java Thu May 15 16:31:08 2014
@@ -19,6 +19,9 @@ package org.apache.pdfbox.filter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import java.util.Iterator;
+import javax.imageio.ImageIO;
+import javax.imageio.ImageReader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -46,6 +49,7 @@ public abstract class Filter
* @param encoded the encoded byte stream
* @param decoded the stream where decoded data will be written
* @param parameters the parameters used for decoding
+ * @param index the index to the filter being decoded
* @return repaired parameters dictionary, or the original parameters dictionary
* @throws IOException if the stream cannot be decoded
*/
@@ -57,6 +61,7 @@ public abstract class Filter
* @param input the byte stream to encode
* @param encoded the stream where encoded data will be written
* @param parameters the parameters used for encoding
+ * @param index the index to the filter being encoded
* @throws IOException if the stream cannot be encoded
*/
public final void encode(InputStream input, OutputStream encoded, COSDictionary parameters,
@@ -93,4 +98,32 @@ public abstract class Filter
}
return new COSDictionary();
}
+
+ /**
+ * Finds a suitable image reader for a format.
+ *
+ * @param formatName The format to search for.
+ * @param errorCause The probably cause if something goes wrong.
+ * @return The image reader for the format.
+ * @throws MissingImageReaderException if no image reader is found.
+ */
+ protected ImageReader findImageReader(String formatName, String errorCause) throws MissingImageReaderException
+ {
+ Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(formatName);
+ ImageReader reader = null;
+ while (readers.hasNext())
+ {
+ reader = readers.next();
+ if (reader.canReadRaster())
+ {
+ break;
+ }
+ }
+ if (reader == null)
+ {
+ throw new MissingImageReaderException("Cannot read " + formatName + " image: " + errorCause);
+ }
+ return reader;
+ }
+
}
Modified: 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=1594969&r1=1594968&r2=1594969&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java Thu May 15 16:31:08 2014
@@ -55,22 +55,7 @@ final class JBIG2Filter extends Filter
public final DecodeResult decode(InputStream encoded, OutputStream decoded,
COSDictionary parameters, int index) throws IOException
{
- // find suitable image reader
- Iterator readers = ImageIO.getImageReadersByFormatName("JBIG2");
- ImageReader reader = null;
- while(readers.hasNext()) {
- reader = (ImageReader)readers.next();
- if(reader.canReadRaster()) {
- break;
- }
- }
-
- if (reader == null)
- {
- throw new MissingImageReaderException("Cannot read JBIG2 image: " +
- "jbig2-imageio is not installed");
- }
-
+ ImageReader reader = findImageReader("JBIG2", "jbig2-imageio is not installed");
DecodeResult result = new DecodeResult(new COSDictionary());
result.getParameters().addAll(parameters);
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java?rev=1594969&r1=1594968&r2=1594969&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java Thu May 15 16:31:08 2014
@@ -70,24 +70,9 @@ public final class JPXFilter extends Fil
}
// try to read using JAI Image I/O
- private static BufferedImage readJPX(InputStream input, DecodeResult result) throws IOException
+ private BufferedImage readJPX(InputStream input, DecodeResult result) throws IOException
{
- // find suitable image reader
- Iterator readers = ImageIO.getImageReadersByFormatName("JPEG2000");
- ImageReader reader = null;
- while(readers.hasNext()) {
- reader = (ImageReader)readers.next();
- if(reader.canReadRaster()) {
- break;
- }
- }
-
- if (reader == null)
- {
- throw new MissingImageReaderException("Cannot read JPEG 2000 (JPX) image: " +
- "Java Advanced Imaging (JAI) Image I/O Tools are not installed");
- }
-
+ ImageReader reader = findImageReader("JPEG2000", "Java Advanced Imaging (JAI) Image I/O Tools are not installed");
ImageInputStream iis = null;
try
{