Author: tilman Date: Mon Apr 23 17:39:33 2018 New Revision: 1829911 URL: http://svn.apache.org/viewvc?rev=1829911&view=rev Log: PDFBOX-4200: catch IOException if ICC profile cannot be read and use alternate colorspace
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java?rev=1829911&r1=1829910&r2=1829911&view=diff ============================================================================== --- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java (original) +++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java Mon Apr 23 17:39:33 2018 @@ -161,28 +161,25 @@ public final class PDICCBased extends PD Transparency.OPAQUE, DataBuffer.TYPE_BYTE); } } - catch (RuntimeException e) + catch (ProfileDataException e) { - if (e instanceof ProfileDataException || - e instanceof CMMException || - e instanceof IllegalArgumentException || - e instanceof ArrayIndexOutOfBoundsException) - { - // fall back to alternateColorSpace color space - awtColorSpace = null; - alternateColorSpace = getAlternateColorSpace(); - if (alternateColorSpace.equals(PDDeviceRGB.INSTANCE)) - { - isRGB = true; - } - LOG.warn("Can't read embedded ICC profile (" + e.getLocalizedMessage() + - "), using alternate color space: " + alternateColorSpace.getName()); - initialColor = alternateColorSpace.getInitialColor(); - } - else - { - throw e; - } + fallbackToAlternateColorSpace(e); + } + catch (CMMException e) + { + fallbackToAlternateColorSpace(e); + } + catch (IllegalArgumentException e) + { + fallbackToAlternateColorSpace(e); + } + catch (ArrayIndexOutOfBoundsException e) + { + fallbackToAlternateColorSpace(e); + } + catch (IOException e) + { + fallbackToAlternateColorSpace(e); } finally { @@ -190,6 +187,19 @@ public final class PDICCBased extends PD } } + private void fallbackToAlternateColorSpace(Exception e) throws IOException + { + awtColorSpace = null; + alternateColorSpace = getAlternateColorSpace(); + if (alternateColorSpace.equals(PDDeviceRGB.INSTANCE)) + { + isRGB = true; + } + LOG.warn("Can't read embedded ICC profile (" + e.getLocalizedMessage() + + "), using alternate color space: " + alternateColorSpace.getName()); + initialColor = alternateColorSpace.getInitialColor(); + } + /** * Returns true if the given profile is represents sRGB. */