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