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 2019/03/23 05:10:04 UTC

svn commit: r1856104 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Author: tilman
Date: Sat Mar 23 05:10:04 2019
New Revision: 1856104

URL: http://svn.apache.org/viewvc?rev=1856104&view=rev
Log:
PDFBOX-4492: use higher max value for dash segment length on low resolution to prevent jvm crash on jdk8; rearrange comments to proper place

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1856104&r1=1856103&r2=1856104&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java Sat Mar 23 05:10:04 2019
@@ -698,14 +698,23 @@ public class PageDrawer extends PDFGraph
         PDLineDashPattern dashPattern = state.getLineDashPattern();
         int phaseStart = dashPattern.getPhase();
         float[] dashArray = dashPattern.getDashArray();
-        // apply the CTM
+        float scalingFactorX = new Matrix(xform).getScalingFactorX();
         for (int i = 0; i < dashArray.length; ++i)
         {
+            // apply the CTM
+            float w = transformWidth(dashArray[i]); 
             // minimum line dash width avoids JVM crash,
             // see PDFBOX-2373, PDFBOX-2929, PDFBOX-3204, PDFBOX-3813
             // also avoid 0 in array like "[ 0 1000 ] 0 d", see PDFBOX-3724
-            float w = transformWidth(dashArray[i]);
-            dashArray[i] = Math.max(w, 0.062f);
+            if (scalingFactorX < 0.5f)
+            {
+                // PDFBOX-4492
+                dashArray[i] = Math.max(w, 0.2f);
+            }
+            else
+            {
+                dashArray[i] = Math.max(w, 0.062f);
+            }
         }
         phaseStart = (int) transformWidth(phaseStart);