func DrawBezierPathWithCreator(bpath CubicBezierPath, creator *pdfcontent.ContentCreator)
DrawBezierPathWithCreator makes the bezier path with the content creator. Adds the PDF commands to draw the path to the creator instance.
func DrawPathWithCreator(path Path, creator *pdfcontent.ContentCreator)
DrawPathWithCreator makes the path with the content creator. Adds the PDF commands to draw the path to the creator instance.
BasicLine defines a line between point 1 (X1,Y1) and point 2 (X2,Y2). The line has a specified width, color and opacity.
type BasicLine struct { X1 float64 Y1 float64 X2 float64 Y2 float64 LineColor pdf.PdfColor Opacity float64 // Alpha value (0-1). LineWidth float64 LineStyle LineStyle DashArray []int64 // Defaults to {1, 1}. DashPhase int64 }
func (line BasicLine) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the basic line to PDF. Generates the content stream which can be used in page contents or appearance stream of annotation. Returns the stream content, XForm bounding box (local), bounding box and an error if one occurred.
BoundingBox represents the smallest rectangular area that encapsulates an object.
type BoundingBox struct { X float64 Y float64 Width float64 Height float64 }
func (b BoundingBox) ToPdfRectangle() *model.PdfRectangle
ToPdfRectangle returns the bounding box as a PDF rectangle.
Circle represents a circle shape with fill and border properties that can be drawn to a PDF content stream.
type Circle struct { X float64 Y float64 Width float64 Height float64 FillEnabled bool // Show fill? FillColor pdf.PdfColor BorderEnabled bool // Show border? BorderWidth float64 BorderColor pdf.PdfColor Opacity float64 // Alpha value (0-1). }
func (c Circle) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the circle. Can specify a graphics state (gsName) for setting opacity etc. Otherwise leave empty (""). Returns the content stream as a byte array, the bounding box and an error on failure.
CubicBezierCurve is defined by: R(t) = P0*(1-t)^3 + P1*3*t*(1-t)^2 + P2*3*t^2*(1-t) + P3*t^3 where P0 is the current point, P1, P2 control points and P3 the final point.
type CubicBezierCurve struct { P0 Point // Starting point. P1 Point // Control point 1. P2 Point // Control point 2. P3 Point // Final point. }
func NewCubicBezierCurve(x0, y0, x1, y1, x2, y2, x3, y3 float64) CubicBezierCurve
NewCubicBezierCurve returns a new cubic Bezier curve.
func (curve CubicBezierCurve) AddOffsetXY(offX, offY float64) CubicBezierCurve
AddOffsetXY adds X,Y offset to all points on a curve.
func (curve CubicBezierCurve) GetBounds() model.PdfRectangle
GetBounds returns the bounding box of the Bezier curve.
CubicBezierPath represents a collection of cubic Bezier curves.
type CubicBezierPath struct { Curves []CubicBezierCurve }
func NewCubicBezierPath() CubicBezierPath
NewCubicBezierPath returns a new empty cubic Bezier path.
func (p CubicBezierPath) AppendCurve(curve CubicBezierCurve) CubicBezierPath
AppendCurve appends the specified Bezier curve to the path.
func (p CubicBezierPath) Copy() CubicBezierPath
Copy returns a clone of the Bezier path.
func (p CubicBezierPath) GetBoundingBox() Rectangle
GetBoundingBox returns the bounding box of the Bezier path.
func (p CubicBezierPath) Offset(offX, offY float64) CubicBezierPath
Offset shifts the Bezier path with the specified offsets.
CurvePolygon is a multi-point shape with rings containing curves that can be drawn to a PDF content stream.
type CurvePolygon struct { Rings [][]CubicBezierCurve FillEnabled bool FillColor pdf.PdfColor BorderEnabled bool BorderColor pdf.PdfColor BorderWidth float64 }
func (p CurvePolygon) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the composite curve polygon. A graphics state name can be specified for setting the curve properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the bounding box of the polygon.
Line defines a line shape between point 1 (X1,Y1) and point 2 (X2,Y2). The line ending styles can be none (regular line), or arrows at either end. The line also has a specified width, color and opacity.
type Line struct { X1 float64 Y1 float64 X2 float64 Y2 float64 LineColor pdf.PdfColor Opacity float64 // Alpha value (0-1). LineWidth float64 LineEndingStyle1 LineEndingStyle // Line ending style of point 1. LineEndingStyle2 LineEndingStyle // Line ending style of point 2. LineStyle LineStyle }
func (line Line) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the line to PDF contentstream. Generates the content stream which can be used in page contents or appearance stream of annotation. Returns the stream content, XForm bounding box (local), bounding box and an error if one occurred.
LineEndingStyle defines the line ending style for lines. The currently supported line ending styles are None, Arrow (ClosedArrow) and Butt.
type LineEndingStyle int
Line ending styles.
const ( LineEndingStyleNone LineEndingStyle = 0 LineEndingStyleArrow LineEndingStyle = 1 LineEndingStyleButt LineEndingStyle = 2 )
LineStyle refers to how the line will be created.
type LineStyle int
Line styles.
const ( LineStyleSolid LineStyle = 0 LineStyleDashed LineStyle = 1 )
Path consists of straight line connections between each point defined in an array of points.
type Path struct { Points []Point }
func NewPath() Path
NewPath returns a new empty path.
func (p Path) AppendPoint(point Point) Path
AppendPoint adds the specified point to the path.
func (p Path) Copy() Path
Copy returns a clone of the path.
func (p Path) GetBoundingBox() BoundingBox
GetBoundingBox returns the bounding box of the path.
func (p Path) GetPointNumber(number int) Point
GetPointNumber returns the path point at the index specified by number. The index is 1-based.
func (p Path) Length() int
Length returns the number of points in the path.
func (p Path) Offset(offX, offY float64) Path
Offset shifts the path with the specified offsets.
func (p Path) RemovePoint(number int) Path
RemovePoint removes the point at the index specified by number from the path. The index is 1-based.
Point represents a two-dimensional point.
type Point struct { X float64 Y float64 }
func NewPoint(x, y float64) Point
NewPoint returns a new point with the coordinates x, y.
func (p Point) Add(dx, dy float64) Point
Add shifts the coordinates of the point with dx, dy and returns the result.
func (p Point) AddVector(v Vector) Point
AddVector adds vector to a point.
func (p Point) Rotate(theta float64) Point
Rotate returns a new Point at `p` rotated by `theta` degrees.
func (p Point) String() string
PolyBezierCurve represents a composite curve that is the result of joining multiple cubic Bezier curves.
type PolyBezierCurve struct { Curves []CubicBezierCurve BorderWidth float64 BorderColor pdf.PdfColor FillEnabled bool FillColor pdf.PdfColor }
func (p PolyBezierCurve) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the composite Bezier curve. A graphics state name can be specified for setting the curve properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the curve bounding box.
Polygon is a multi-point shape that can be drawn to a PDF content stream.
type Polygon struct { Points [][]Point FillEnabled bool FillColor pdf.PdfColor BorderEnabled bool BorderColor pdf.PdfColor BorderWidth float64 }
func (p Polygon) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the polygon. A graphics state name can be specified for setting the polygon properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the polygon bounding box.
Polyline defines a slice of points that are connected as straight lines.
type Polyline struct { Points []Point LineColor pdf.PdfColor LineWidth float64 }
func (p Polyline) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the polyline. A graphics state name can be specified for setting the polyline properties (e.g. setting the opacity). Otherwise leave empty (""). Returns the content stream as a byte array and the polyline bounding box.
Rectangle is a shape with a specified Width and Height and a lower left corner at (X,Y) that can be drawn to a PDF content stream. The rectangle can optionally have a border and a filling color. The Width/Height includes the border (if any specified), i.e. is positioned inside.
type Rectangle struct { // Position and size properties. X float64 Y float64 Width float64 Height float64 // Fill properties. FillEnabled bool FillColor pdf.PdfColor // Border properties. BorderEnabled bool BorderColor pdf.PdfColor BorderWidth float64 BorderRadiusTopLeft float64 BorderRadiusTopRight float64 BorderRadiusBottomLeft float64 BorderRadiusBottomRight float64 // Shape opacity (0-1 interval). Opacity float64 }
func (rect Rectangle) Draw(gsName string) ([]byte, *pdf.PdfRectangle, error)
Draw draws the rectangle. A graphics state can be specified for setting additional properties (e.g. opacity). Otherwise pass an empty string for the `gsName` parameter. The method returns the content stream as a byte array and the bounding box of the shape.
func (rect Rectangle) ToPdfRectangle() *pdf.PdfRectangle
ToPdfRectangle returns the rectangle as a PDF rectangle.
Vector represents a two-dimensional vector.
type Vector struct { Dx float64 Dy float64 }
func NewVector(dx, dy float64) Vector
NewVector returns a new vector with the direction specified by dx and dy.
func NewVectorBetween(a Point, b Point) Vector
NewVectorBetween returns a new vector with the direction specified by the subtraction of point a from point b (b-a).
func NewVectorPolar(length float64, theta float64) Vector
NewVectorPolar returns a new vector calculated from the specified magnitude and angle.
func (v Vector) Add(other Vector) Vector
Add adds the specified vector to the current one and returns the result.
func (v Vector) Flip() Vector
Flip changes the sign of the vector: -vector.
func (v Vector) FlipX() Vector
FlipX flips the sign of the Dx component of the vector.
func (v Vector) FlipY() Vector
FlipY flips the sign of the Dy component of the vector.
func (v Vector) GetPolarAngle() float64
GetPolarAngle returns the angle the magnitude of the vector forms with the positive X-axis going counterclockwise.
func (v Vector) Magnitude() float64
Magnitude returns the magnitude of the vector.
func (v Vector) Rotate(phi float64) Vector
Rotate rotates the vector by the specified angle.
func (v Vector) Scale(factor float64) Vector
Scale scales the vector by the specified factor.