You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/10/27 20:03:43 UTC
svn commit: r1634647 - in /pdfbox/trunk:
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java
preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
Author: jahewson
Date: Mon Oct 27 19:03:43 2014
New Revision: 1634647
URL: http://svn.apache.org/r1634647
Log:
PDFBOX-2407: Preflight - Check sparation color spaces for device-independance
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java
pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java?rev=1634647&r1=1634646&r2=1634647&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDSeparation.java Mon Oct 27 19:03:43 2014
@@ -159,6 +159,15 @@ public class PDSeparation extends PDSpec
* Returns the colorant name.
* @return the name of the colorant
*/
+ public PDColorSpace getAlternateColorSpace()
+ {
+ return alternateColorSpace;
+ }
+
+ /**
+ * Returns the colorant name.
+ * @return the name of the colorant
+ */
public String getColorantName()
{
COSName name = (COSName)array.getObject(COLORANT_NAMES);
Modified: pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java?rev=1634647&r1=1634646&r2=1634647&view=diff
==============================================================================
--- pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java (original)
+++ pdfbox/trunk/preflight/src/main/java/org/apache/pdfbox/preflight/content/PreflightStreamEngine.java Mon Oct 27 19:03:43 2014
@@ -42,6 +42,7 @@ import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.graphics.color.PDCIEBasedColorSpace;
import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
import org.apache.pdfbox.pdmodel.graphics.color.PDICCBased;
+import org.apache.pdfbox.pdmodel.graphics.color.PDSeparation;
import org.apache.pdfbox.preflight.PreflightConfiguration;
import org.apache.pdfbox.preflight.PreflightContext;
import org.apache.pdfbox.preflight.ValidationResult.ValidationError;
@@ -382,24 +383,23 @@ public abstract class PreflightStreamEng
{
if (!validColorSpace(cs, ColorSpaceType.ALL))
{
- // The default fill color needs an OutputIntent
registerError("The operator \"" + operation + "\" can't be used without Color Profile",
ERROR_GRAPHIC_INVALID_COLOR_SPACE_MISSING);
}
}
}
- private boolean validColorSpace(PDColorSpace colorSpace, ColorSpaceType expectedType)
+ private boolean validColorSpace(PDColorSpace colorSpace, ColorSpaceType expectedIccType)
throws ContentStreamException
{
if (colorSpace == null)
{
- return validColorSpaceDestOutputProfile(expectedType);
+ return validColorSpaceDestOutputProfile(expectedIccType);
}
else
{
- return isDeviceIndependent(colorSpace, expectedType) ||
- validColorSpaceDestOutputProfile(expectedType);
+ return isDeviceIndependent(colorSpace, expectedIccType) ||
+ validColorSpaceDestOutputProfile(expectedIccType);
}
}
@@ -445,18 +445,23 @@ public abstract class PreflightStreamEng
* Return true if the given ColorSpace is an independent device ColorSpace.
* If the color space is an ICCBased, check the embedded profile color (RGB or CMYK)
*/
- private boolean isDeviceIndependent(PDColorSpace cs, ColorSpaceType expectedType)
+ private boolean isDeviceIndependent(PDColorSpace cs, ColorSpaceType expectedIccType)
{
if (cs instanceof PDICCBased)
{
int type = ((PDICCBased)cs).getColorSpaceType();
- switch (expectedType)
+ switch (expectedIccType)
{
case RGB: return type == ICC_ColorSpace.TYPE_RGB;
case CMYK: return type == ICC_ColorSpace.TYPE_CMYK;
default: return true;
}
}
+ else if (cs instanceof PDSeparation)
+ {
+ return isDeviceIndependent(((PDSeparation)cs).getAlternateColorSpace(),
+ expectedIccType);
+ }
else
{
return cs instanceof PDCIEBasedColorSpace;