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 2016/11/11 17:05:01 UTC
svn commit: r1769317 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
Author: tilman
Date: Fri Nov 11 17:05:00 2016
New Revision: 1769317
URL: http://svn.apache.org/viewvc?rev=1769317&view=rev
Log:
PDFBOX-3566: avoid ClassCastException due to incompatible plugin
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java?rev=1769317&r1=1769316&r2=1769317&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java Fri Nov 11 17:05:00 2016
@@ -227,6 +227,26 @@ public final class JPEGFactory
return pdImage;
}
+ private static ImageWriter getJPEGImageWriter() throws IOException
+ {
+ ImageWriter writer = null;
+ Iterator<ImageWriter> writers = ImageIO.getImageWritersBySuffix("jpeg");
+ while (writers.hasNext())
+ {
+ if (writer != null)
+ {
+ writer.dispose();
+ }
+ writer = writers.next();
+ // PDFBOX-3566: avoid CLibJPEGImageWriter, which is not a JPEGImageWriteParam
+ if (writer.getDefaultWriteParam() instanceof JPEGImageWriteParam)
+ {
+ return writer;
+ }
+ }
+ throw new IOException("No ImageWriter found for JPEG format");
+ }
+
private static void encodeImageToJPEGStream(BufferedImage image, float quality, int dpi,
OutputStream out) throws IOException
{
@@ -236,7 +256,7 @@ public final class JPEGFactory
try
{
// find JAI writer
- imageWriter = ImageIO.getImageWritersBySuffix("jpeg").next();
+ imageWriter = getJPEGImageWriter();
ios = ImageIO.createImageOutputStream(out);
imageWriter.setOutput(ios);