Shapes and Drawing
This guide covers Line, Square, Circle, Polygon, PolyLine, and Ink annotations.
Line Annotations
Line annotations draw from start to end with optional arrow endpoints.
Endpoint Styles
| Constant | Value | Description |
|---|---|---|
Markup.e_EndingStyleNone | 0 | None |
Markup.e_EndingStyleSquare | 1 | Square |
Markup.e_EndingStyleCircle | 2 | Circle |
Markup.e_EndingStyleDiamond | 3 | Diamond |
Markup.e_EndingStyleOpenArrow | 4 | Open arrow |
Markup.e_EndingStyleClosedArrow | 5 | Closed arrow |
Markup.e_EndingStyleButt | 6 | Butt |
Markup.e_EndingStyleROpenArrow | 7 | Reverse open arrow |
Markup.e_EndingStyleRClosedArrow | 8 | Reverse closed arrow |
Markup.e_EndingStyleSlash | 9 | Slash |
Core Methods
| Method | Description |
|---|---|
getStartPoint() / setStartPoint(PointF) | Start point |
getEndPoint() / setEndPoint(PointF) | End point |
getLineStartStyle() / setLineStartStyle(int) | Start style |
getLineEndStyle() / setLineEndStyle(int) | End style |
getStyleFillColor() / setStyleFillColor(int) | Endpoint fill color |
hasCaption() / enableCaption(boolean) | Caption |
getCaptionOffset() / setCaptionOffset(PointF) | Caption offset |
Example: Line with Arrow
java
import com.foxit.sdk.common.fxcrt.PointF;
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.Line;
import com.foxit.sdk.pdf.annots.Markup;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(100, 300, 400, 350);
Line line = new Line(page.addAnnot(Annot.e_Line, rect));
line.setStartPoint(new PointF(100, 325));
line.setEndPoint(new PointF(400, 325));
line.setLineStartStyle(Markup.e_EndingStyleNone);
line.setLineEndStyle(Markup.e_EndingStyleClosedArrow);
line.setBorderColor(0xffff0000);
line.setContent("Watch out this section");
line.resetAppearanceStream();Square and Circle
Square and Circle draw box or oval markers with border and fill colors.
Example: Square
java
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.Square;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(100, 600, 300, 700);
Square square = new Square(page.addAnnot(Annot.e_Square, rect));
square.setBorderColor(0xff0000ff);
square.setFillColor(0x330000ff);
square.setOpacity(0.8f);
square.setContent("Marked Section");
square.resetAppearanceStream();Example: Circle
java
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.Circle;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(100, 400, 250, 500);
Circle circle = new Circle(page.addAnnot(Annot.e_Circle, rect));
circle.setBorderColor(0xffff6600);
circle.setFillColor(0x22ff6600);
circle.setContent("Key Content");
circle.resetAppearanceStream();Polygon and PolyLine
Vertices define the shape; polygons close; polylines stay open.
Example: Polygon
java
import com.foxit.sdk.common.fxcrt.PointF;
import com.foxit.sdk.common.fxcrt.PointFArray;
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.Markup;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(100, 200, 300, 350);
Markup polygon = new Markup(page.addAnnot(Annot.e_Polygon, rect));
PointFArray vertices = new PointFArray();
vertices.add(new PointF(150, 200));
vertices.add(new PointF(300, 250));
vertices.add(new PointF(280, 350));
vertices.add(new PointF(120, 330));
polygon.setVertexes(vertices);
polygon.setBorderColor(0xff009900);
polygon.resetAppearanceStream();Ink Annotations
Ink records freehand strokes via Path.
Path Methods
| Method | Description |
|---|---|
moveTo(PointF) | Start stroke |
lineTo(PointF) | Line to point |
cubicBezierTo(PointF, PointF, PointF) | Cubic Bézier |
closeFigure() | Close path |
getPointCount() / getPoint(int) | Point count / point at index |
Example: Ink
java
import com.foxit.sdk.common.fxcrt.PointF;
import com.foxit.sdk.common.fxcrt.RectF;
import com.foxit.sdk.common.Path;
import com.foxit.sdk.pdf.PDFPage;
import com.foxit.sdk.pdf.annots.Annot;
import com.foxit.sdk.pdf.annots.Ink;
PDFPage page = doc.getPage(0);
RectF rect = new RectF(50, 100, 350, 300);
Ink ink = new Ink(page.addAnnot(Annot.e_Ink, rect));
Path path = new Path();
path.moveTo(new PointF(60, 150));
path.lineTo(new PointF(120, 200));
path.lineTo(new PointF(200, 160));
path.lineTo(new PointF(300, 250));
ink.setInkList(path);
ink.setBorderColor(0xff000000);
ink.setOpacity(0.9f);
ink.resetAppearanceStream();NOTE
Call ink.enableUseBezier(true) for smoother strokes with Bézier curves.