You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by tb...@apache.org on 2018/09/11 13:31:23 UTC
svn commit: r1840565 -
/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDICCBased.java
Author: tboehme
Date: Tue Sep 11 13:31:23 2018
New Revision: 1840565
URL: http://svn.apache.org/viewvc?rev=1840565&view=rev
Log:
PDFBOX-4309: added system property to enforce using alternate color space instead of ICC color space for performance reasons with LittleCMS used by Java
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=1840565&r1=1840564&r2=1840565&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 Tue Sep 11 13:31:23 2018
@@ -63,6 +63,10 @@ public final class PDICCBased extends PD
private ICC_ColorSpace awtColorSpace;
private PDColor initialColor;
private boolean isRGB = false;
+ // allows to force using alternate color space instead of ICC color space for performance
+ // reasons with LittleCMS (LCMS), see PDFBOX-4309
+ // WARNING: do not activate this in a conforming reader
+ private boolean useOnlyAlternateColorSpace = false;
/**
* Creates a new ICC color space with an empty stream.
@@ -93,6 +97,8 @@ public final class PDICCBased extends PD
{
throw new IOException("ICCBased colorspace array must have a stream as second element");
}
+ useOnlyAlternateColorSpace = System
+ .getProperty("org.apache.pdfbox.rendering.UseAlternateInsteadOfICCColorSpace") != null;
array = iccArray;
stream = new PDStream((COSStream) iccArray.getObject(1));
loadICCProfile();
@@ -118,6 +124,18 @@ public final class PDICCBased extends PD
*/
private void loadICCProfile() throws IOException
{
+ if (useOnlyAlternateColorSpace)
+ {
+ try
+ {
+ fallbackToAlternateColorSpace(null);
+ return;
+ }
+ catch ( IOException e )
+ {
+ LOG.warn("Error initializing alternate color space: " + e.getLocalizedMessage());
+ }
+ }
InputStream input = null;
try
{
@@ -195,8 +213,11 @@ public final class PDICCBased extends PD
{
isRGB = true;
}
- LOG.warn("Can't read embedded ICC profile (" + e.getLocalizedMessage() +
- "), using alternate color space: " + alternateColorSpace.getName());
+ if ( e != null )
+ {
+ LOG.warn("Can't read embedded ICC profile (" + e.getLocalizedMessage() +
+ "), using alternate color space: " + alternateColorSpace.getName());
+ }
initialColor = alternateColorSpace.getInitialColor();
}