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 2022/08/06 03:57:34 UTC
svn commit: r1903247 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
Author: tilman
Date: Sat Aug 6 03:57:34 2022
New Revision: 1903247
URL: http://svn.apache.org/viewvc?rev=1903247&view=rev
Log:
PDFBOX-5488: get ColorSpaceType name from javax_imageio_1.0
Modified:
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java?rev=1903247&r1=1903246&r2=1903247&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java Sat Aug 6 03:57:34 2022
@@ -31,6 +31,9 @@ import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.metadata.IIOMetadataNode;
import javax.imageio.stream.ImageInputStream;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -51,6 +54,21 @@ final class DCTFilter extends Filter
private static final int POS_TRANSFORM = 11;
private static final String ADOBE = "Adobe";
+ private static XPathExpression xPathExpression;
+
+ static
+ {
+ try
+ {
+ xPathExpression = XPathFactory.newInstance().newXPath().compile("Chroma/ColorSpaceType/@name");
+ }
+ catch (XPathExpressionException ex)
+ {
+ // shouldn't happen unless you changed the expression
+ LOG.error(ex.getMessage(), ex);
+ }
+ }
+
@Override
public DecodeResult decode(InputStream encoded, OutputStream decoded, COSDictionary
parameters, int index, DecodeOptions options) throws IOException
@@ -180,6 +198,24 @@ final class DCTFilter extends Filter
Element adobe = (Element) app14AdobeNodeList.item(0);
return Integer.parseInt(adobe.getAttribute("transform"));
}
+
+ // PDFBOX-5488: plan B: use ColorSpaceType from the other metadata tree.
+ try
+ {
+ String value = xPathExpression.evaluate(metadata.getAsTree("javax_imageio_1.0"));
+ if ("YCbCr".equals(value))
+ {
+ return 1;
+ }
+ if ("YCCK".equals(value))
+ {
+ return 2;
+ }
+ }
+ catch (XPathExpressionException ex)
+ {
+ return 0;
+ }
return 0;
}