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();
     }