Author: tilman
Date: Sun Aug 31 08:13:22 2025
New Revision: 1928148
Log:
PDFBOX-6057: check that initial position exists
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
Sun Aug 31 08:13:19 2025 (r1928147)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/contentstream/operator/graphics/CurveToReplicateFinalPoint.java
Sun Aug 31 08:13:22 2025 (r1928148)
@@ -20,9 +20,11 @@ import java.io.IOException;
import java.util.List;
import java.awt.geom.Point2D;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
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 Logger LOG =
LogManager.getLogger(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 ({},{}) without initial MoveTo", point3.x,
point3.y);
+ context.moveTo(point3.x, point3.y);
+ }
+ else
+ {
+ context.curveTo(point1.x, point1.y,
+ point3.x, point3.y,
+ point3.x, point3.y);
+ }
}
@Override