# Path Class

> A path in a PDF file defines shapes.

- Product: Adobe PDF Library 18
- Language: Java
- Version: APDFL18.0.5PlusP2e
- HTML page: https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Path
- Version index: https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/llms.txt

```java
class Path : Element
```

**Namespace:** `com::datalogics::PDFL`

**Inherits from:** [`Element`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Element.md)

## Description

A path in a PDF file defines shapes. Paths in PDF files are used to draw lines, define filled areas, and define boundaries for clipping graphics. A path is composed of straight and curved line segments.

**Referenced by:** [`Path`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Path.md)

**Uses types:** [`Clip`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Clip.md), [`Document`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Document.md), [`GraphicState`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/GraphicState.md), [`Matrix`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Matrix.md), [`Path`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Path.md), [`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md), [`Rect`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Rect.md), [`Segment`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Segment.md)

## Constructors

### Path

```java
com.datalogics.PDFL.Path.Path()
```

*constructor*

Create a path.

### Path

```java
com.datalogics.PDFL.Path.Path(GraphicState graphicState)
```

*constructor*

**Parameters**

- `graphicState` ([`GraphicState`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/GraphicState.md)): the initial graphic state for the path

Create a path with a given graphic state.

## Methods

### addCurve

```java
void com.datalogics.PDFL.Path.addCurve(Point Point1, Point Point2, Point Point3)
```

**Parameters**

- `Point1` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): first Bezier control point
- `Point2` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): second Bezier control point
- `Point3` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): the ending Point of the Bezier curve which will also be the current point of the current path.

**Returns:** `void`

Adds a Bezier curve from the current path using the first two points specified as Bezier control points ending at the third point. The new current point is then set to the third point.

### addCurveV

```java
void com.datalogics.PDFL.Path.addCurveV(Point Point1, Point Point2)
```

**Parameters**

- `Point1` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): first Bezier control point
- `Point2` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): the ending Point of the Bezier curve which will also be the new current point of the path.

**Returns:** `void`

Adds a Bezier curve from the current path. This extends from the current path to the point Point2 using the current point and the first point specified as Bezier control points ending at the second point. The new current point is then set to the second point.

### addCurveY

```java
void com.datalogics.PDFL.Path.addCurveY(Point Point1, Point Point2)
```

**Parameters**

- `Point1` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): first Bezier control point
- `Point2` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): second Bezier control point and the ending Point of the Bezier curve which will also be the new current point of the path.

**Returns:** `void`

Adds a Bezier curve from the current path. This extends from the current path to the point Point2 using the two points specified as Bezier control points ending at the second point. The new current point is then set to the second point.

### addLine

```java
void com.datalogics.PDFL.Path.addLine(Point Point)
```

**Parameters**

- `Point` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): the coordinates of the endpoint of the new line.

**Returns:** `void`

Adds a line to the current path from the current path position. The given point becomes the new current position.

### addRect

```java
void com.datalogics.PDFL.Path.addRect(Point Point, double Width, double Height)
```

**Parameters**

- `Point` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): the coordinates of the lower left corner of the new rectangle.
- `Width` (`double`): the width of the new rectangle.
- `Height` (`double`): the height of the new rectangle.

**Returns:** `void`

Adds a rectangle to the current path with the lower left corner at the give point, and with the width and height specified.

### clone

```java
Path com.datalogics.PDFL.Path.clone()
```

**Returns:** [`Path`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Path.md)

The copied path.

Makes a copy of the path.

Make a copy of an path to obtain a new path that has a distinct set of attributes.

### clone

```java
Path com.datalogics.PDFL.Path.clone(java.util.EnumSet< ElementCloneFlags > cloneFlags)
```

**Parameters**

- `cloneFlags` (`java.util.EnumSet< ElementCloneFlags >`): Flags that modify the cloning operation.

**Returns:** [`Path`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Path.md)

The copied path.

Makes a copy of the path.

Make a copy of an path to obtain a new path that has a distinct set of attributes.

### closePath

```java
void com.datalogics.PDFL.Path.closePath()
```

**Returns:** `void`

Closes the current subpath.

### colorConvert

```java
Path com.datalogics.PDFL.Path.colorConvert(Document document, ColorProfile prof, RenderIntent intent, boolean embed)
```

**Parameters**

- `document` ([`Document`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Document.md)): The document the element belongs to.
- `prof` (`ColorProfile`): The ICC ColorProfile to be applied.
- `intent` (`RenderIntent`): The ICC Rendering Intent for the ColorProfile
- `embed` (`boolean`): If true, embed the color space and make the object calibrated. If it is false and the target profile is CMYK, RGB, or Gray, the colors space of the resulting object, after conversion, will be DeviceCMYK, DeviceRGB, or DeviceGray, respectively.

**Returns:** [`Path`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Path.md)

A new Path with the applied ICC ColorProfile.

Applies the specified ICC ColorProfile to the Path

### delete

```java
synchronized void com.datalogics.PDFL.Path.delete(Boolean disposing)
```

*protected*

**Parameters**

- `disposing` (`Boolean`)

**Returns:** `synchronized void`

### delete

```java
synchronized void com.datalogics.PDFL.Path.delete()
```

**Returns:** `synchronized void`

### finalize

```java
void com.datalogics.PDFL.Path.finalize()
```

*protected*

**Returns:** `void`

### getBoundingBox

```java
Rect com.datalogics.PDFL.Element.getBoundingBox()
```

**Returns:** [`Rect`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Rect.md)

The bounding box for this element. The coordinates of the bounding box are specified in user space coordinates, relative to the element's Content. Note that user space coordinates correspond to unrotated pages; any rotation specified in the page dictionary is not taken into account.

The bounding box for this element. The bounding box is a rectangle that is guaranteed to encompass the element, but it is not guaranteed to be the smallest box that could contain the element. For example, if the element is a Path that contains an arc, the bounding box encompasses the bezier control points, and not just the curve itself.

### getClip

```java
Clip com.datalogics.PDFL.Element.getClip()
```

**Returns:** [`Clip`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Clip.md)

The current Clip for this Element, or NULL if no clip is set.

Gets the current Clip for an Element.

### getGraphicState

```java
GraphicState com.datalogics.PDFL.Path.getGraphicState()
```

**Returns:** [`GraphicState`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/GraphicState.md)

Get the graphic state of the current path.

May return null if this element does not have a GraphicState.

### getMatrix

```java
Matrix com.datalogics.PDFL.Element.getMatrix()
```

**Returns:** [`Matrix`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Matrix.md)

The current transformation matrix applied to this element.

The transformation matrix for the element.

### getPaintOp

```java
java.util.EnumSet< PathPaintOpFlags > com.datalogics.PDFL.Path.getPaintOp()
```

**Returns:** `java.util.EnumSet< PathPaintOpFlags >`

the PathPaintOpFlags flags describing the fill and stroke attributes.

Gets the fill and stroke attributes of a path.

### getSegments

```java
java.util.List< Segment > com.datalogics.PDFL.Path.getSegments()
```

**Returns:** [`java.util.List< Segment >`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Segment.md)

Get the segments of the path.

Returns a list of Segment objects, one for each segment in the path.

### moveTo

```java
void com.datalogics.PDFL.Path.moveTo(Point Point)
```

**Parameters**

- `Point` ([`Point`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Point.md)): the coordinates of the new current point.

**Returns:** `void`

Moves the current point of the path to the given point.

### rotate

```java
void com.datalogics.PDFL.Element.rotate(double theta)
```

**Parameters**

- `theta` (`double`): The rotation angle in degrees.

**Returns:** `void`

Rotate an element by theta degrees counterclockwise using the matrix [ cos T sin T -sin T cos T 0 0 ].

### scale

```java
void com.datalogics.PDFL.Element.scale(double sx, double sy)
```

**Parameters**

- `sx` (`double`): The horizontal scale factor.
- `sy` (`double`): The vertical scale factor.

**Returns:** `void`

Scale an element by (sx,sy) units using the matrix [ sx 0 0 sy 0 0 ].

### setClip

```java
void com.datalogics.PDFL.Element.setClip(Clip clip)
```

**Parameters**

- `clip` ([`Clip`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Clip.md)): The clip to set as the current clip for this element, or NULL to remove clipping.

**Returns:** `void`

Sets the current Clip for an Element.

### setGraphicState

```java
void com.datalogics.PDFL.Path.setGraphicState(GraphicState gstate)
```

**Parameters**

- `gstate` ([`GraphicState`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/GraphicState.md)): the new/updated Graphic State for the path.

**Returns:** `void`

Set the Graphic State of the current path.

### setMatrix

```java
void com.datalogics.PDFL.Element.setMatrix(Matrix matrix)
```

**Parameters**

- `matrix` ([`Matrix`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Matrix.md)): The transformation matrix for the element.

**Returns:** `void`

Set the transformation matrix for the element.

### setPaintOp

```java
void com.datalogics.PDFL.Path.setPaintOp(java.util.EnumSet< PathPaintOpFlags > paintops)
```

**Parameters**

- `paintops` (`java.util.EnumSet< PathPaintOpFlags >`): the flags describing the fill and stroke attributes.

**Returns:** `void`

Sets the fill and stroke attributes of a path.

### setSegments

```java
void com.datalogics.PDFL.Path.setSegments(java.util.List< Segment > segments)
```

**Parameters**

- `segments` ([`java.util.List< Segment >`](https://docs.datalogics.com/apdfl18/Java/APDFL18.0.5PlusP2e/class/Segment.md)): The segments in the path. This list must have at least one element.

**Returns:** `void`

Set the segments of the path.

### translate

```java
void com.datalogics.PDFL.Element.translate(double tx, double ty)
```

**Parameters**

- `tx` (`double`): The horizontal translation distance in user space units.
- `ty` (`double`): The vertical translation distance in user space units.

**Returns:** `void`

Translate an element by (tx,ty) units using the matrix [ 1 0 0 1 tx ty ].
