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 2015/02/27 19:46:30 UTC
svn commit: r1662787 -
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
Author: tilman
Date: Fri Feb 27 18:46:30 2015
New Revision: 1662787
URL: http://svn.apache.org/r1662787
Log:
PDFBOX-2128: no need to "throws" unchecked exception; avoid IndexOutOfBoundsException on item(0) call
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.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=1662787&r1=1662786&r2=1662787&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 Fri Feb 27 18:46:30 2015
@@ -33,8 +33,8 @@ import javax.imageio.stream.ImageInputSt
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.pdfbox.cos.COSDictionary;
-import org.w3c.dom.DOMException;
import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
/**
* Decompresses data encoded using a DCT (discrete cosine transform)
@@ -148,9 +148,16 @@ final class DCTFilter extends Filter
// 0 = Unknown (RGB or CMYK), 1 = YCbCr, 2 = YCCK
switch (colorTransform)
{
- case 0: break; // already CMYK
- case 1: LOG.warn("YCbCr JPEGs not implemented"); break; // TODO YCbCr
- case 2: raster = fromYCCKtoCMYK(raster); break;
+ case 0:
+ // already CMYK
+ break;
+ case 1:
+ // TODO YCbCr
+ LOG.warn("YCbCr JPEGs not implemented");
+ break;
+ case 2:
+ raster = fromYCCKtoCMYK(raster);
+ break;
}
}
else if (raster.getNumBands() == 3)
@@ -173,18 +180,18 @@ final class DCTFilter extends Filter
return new DecodeResult(parameters);
}
- // reads the APP14 Adobe transform tag
+ // reads the APP14 Adobe transform tag and returns its value, or 0 if unknown
private Integer getAdobeTransform(IIOMetadata metadata)
{
Element tree = (Element)metadata.getAsTree("javax_imageio_jpeg_image_1.0");
Element markerSequence = (Element)tree.getElementsByTagName("markerSequence").item(0);
-
- if (markerSequence.getElementsByTagName("app14Adobe") != null)
+ NodeList app14AdobeNodeList = markerSequence.getElementsByTagName("app14Adobe");
+ if (app14AdobeNodeList != null && app14AdobeNodeList.getLength() > 0)
{
- Element adobe = (Element)markerSequence.getElementsByTagName("app14Adobe").item(0);
+ Element adobe = (Element) app14AdobeNodeList.item(0);
return Integer.parseInt(adobe.getAttribute("transform"));
}
- return 0; // Unknown
+ return 0;
}
// converts YCCK image to CMYK. YCCK is an equivalent encoding for
@@ -253,7 +260,7 @@ final class DCTFilter extends Filter
}
// returns the number of channels as a string, or an empty string if there is an error getting the meta data
- private String getNumChannels(ImageReader reader) throws DOMException, IOException
+ private String getNumChannels(ImageReader reader) throws IOException
{
try
{