Author: tilman
Date: Sun Aug 31 08:13:25 2025
New Revision: 1928149
Log:
PDFBOX-6057: check that initial position exists
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
Modified:
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
==============================================================================
---
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
Sun Aug 31 08:13:22 2025 (r1928148)
+++
pdfbox/branches/3.0/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
Sun Aug 31 08:13:25 2025 (r1928149)
@@ -20,9 +20,11 @@ import java.io.IOException;
import java.util.List;
import java.awt.geom.Point2D;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
import org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine;
import org.apache.pdfbox.contentstream.operator.MissingOperandException;
-
import org.apache.pdfbox.cos.COSBase;
import org.apache.pdfbox.cos.COSNumber;
import org.apache.pdfbox.contentstream.operator.Operator;
@@ -35,6 +37,8 @@ import org.apache.pdfbox.contentstream.o
*/
public final class CurveToReplicateFinalPoint extends GraphicsOperatorProcessor
{
+ private static final Log LOG =
LogFactory.getLog(CurveToReplicateFinalPoint.class);
+
public CurveToReplicateFinalPoint(PDFGraphicsStreamEngine context)
{
super(context);
@@ -57,12 +61,22 @@ public final class CurveToReplicateFinal
COSNumber y3 = (COSNumber)operands.get(3);
PDFGraphicsStreamEngine context = getGraphicsContext();
+ Point2D currentPoint = context.getCurrentPoint();
+
Point2D.Float point1 = context.transformedPoint(x1.floatValue(),
y1.floatValue());
Point2D.Float point3 = context.transformedPoint(x3.floatValue(),
y3.floatValue());
- context.curveTo(point1.x, point1.y,
- point3.x, point3.y,
- point3.x, point3.y);
+ if (currentPoint == null)
+ {
+ LOG.warn("curveTo (" + point3.x + "," + point3.y + ") without
initial MoveTo");
+ context.moveTo(point3.x, point3.y);
+ }
+ else
+ {
+ context.curveTo(point1.x, point1.y,
+ point3.x, point3.y,
+ point3.x, point3.y);
+ }
}
@Override