const ( // DefaultHorizontalScaling represents the default horizontal scaling // percentage of paragraph text chunks. DefaultHorizontalScaling = 100 )
Commonly used colors.
var ( ColorBlack = ColorRGBFromArithmetic(0, 0, 0) ColorWhite = ColorRGBFromArithmetic(1, 1, 1) ColorRed = ColorRGBFromArithmetic(1, 0, 0) ColorGreen = ColorRGBFromArithmetic(0, 1, 0) ColorBlue = ColorRGBFromArithmetic(0, 0, 1) ColorYellow = ColorRGBFromArithmetic(1, 1, 0) )
Commonly used page sizes
var ( PageSizeA3 = PageSize{297 * PPMM, 420 * PPMM} PageSizeA4 = PageSize{210 * PPMM, 297 * PPMM} PageSizeA5 = PageSize{148 * PPMM, 210 * PPMM} PageSizeLetter = PageSize{8.5 * PPI, 11 * PPI} PageSizeLegal = PageSize{8.5 * PPI, 14 * PPI} )
PPI specifies the default PDF resolution in points/inch.
var PPI float64 = 72 // Points per inch. (Default resolution).
PPMM specifies the default PDF resolution in points/mm. Points per mm. (Default resolution).
var PPMM = float64(72 * 1.0 / 25.4)
Block contains a portion of PDF Page contents. It has a width and a position and can be placed anywhere on a Page. It can even contain a whole Page, and is used in the creator where each Drawable object can output one or more blocks, each representing content for separate pages (typically needed when Page breaks occur).
type Block struct {
// contains filtered or unexported fields
}
func NewBlock(width float64, height float64) *Block
NewBlock creates a new Block with specified width and height.
func NewBlockFromPage(page *model.PdfPage) (*Block, error)
NewBlockFromPage creates a Block from a PDF Page. Useful for loading template pages as blocks from a PDF document and additional content with the creator.
func (blk *Block) AddAnnotation(annotation *model.PdfAnnotation)
AddAnnotation adds an annotation to the current block. The annotation will be added to the page the block will be rendered on.
func (blk *Block) Angle() float64
Angle returns the block rotation angle in degrees.
func (blk *Block) Draw(d Drawable) error
Draw draws the drawable d on the block. Note that the drawable must not wrap, i.e. only return one block. Otherwise an error is returned.
func (blk *Block) DrawWithContext(d Drawable, ctx DrawContext) error
DrawWithContext draws the Block using the specified drawing context.
func (blk *Block) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the block contents on a template Page block. Implements the Drawable interface.
func (blk *Block) GetMargins() (float64, float64, float64, float64)
GetMargins returns the Block's margins: left, right, top, bottom.
func (blk *Block) Height() float64
Height returns the Block's height.
func (blk *Block) RotatedSize() (float64, float64)
RotatedSize returns the width and height of the rotated block.
func (blk *Block) Scale(sx, sy float64)
Scale block by specified factors in the x and y directions.
func (blk *Block) ScaleToHeight(h float64)
ScaleToHeight scales the Block to a specified height, maintaining the same aspect ratio.
func (blk *Block) ScaleToWidth(w float64)
ScaleToWidth scales the Block to a specified width, maintaining the same aspect ratio.
func (blk *Block) SetAngle(angleDeg float64)
SetAngle sets the rotation angle in degrees.
func (blk *Block) SetMargins(left, right, top, bottom float64)
SetMargins sets the Block's left, right, top, bottom, margins.
func (blk *Block) SetPos(x, y float64)
SetPos sets the Block's positioning to absolute mode with the specified coordinates.
func (blk *Block) Width() float64
Width returns the Block's width.
CellBorderSide defines the table cell's border side.
type CellBorderSide int
const ( // CellBorderSideLeft adds border on the left side of the table. CellBorderSideLeft CellBorderSide = iota // CellBorderSideRight adds a border on the right side of the table. CellBorderSideRight // CellBorderSideTop adds a border on the top side of the table. CellBorderSideTop // CellBorderSideBottom adds a border on the bottom side of the table. CellBorderSideBottom // CellBorderSideAll adds borders on all sides of the table. CellBorderSideAll )
CellBorderStyle defines the table cell's border style.
type CellBorderStyle int
Currently supported table styles are: None (no border) and boxed (line along each side).
const ( CellBorderStyleNone CellBorderStyle = iota // no border CellBorderStyleSingle CellBorderStyleDouble )
CellHorizontalAlignment defines the table cell's horizontal alignment.
type CellHorizontalAlignment int
Table cells have three horizontal alignment modes: left, center and right.
const ( // CellHorizontalAlignmentLeft aligns cell content on the left (with specified indent); unused space on the right. CellHorizontalAlignmentLeft CellHorizontalAlignment = iota // CellHorizontalAlignmentCenter aligns cell content in the middle (unused space divided equally on the left/right). CellHorizontalAlignmentCenter // CellHorizontalAlignmentRight aligns the cell content on the right; unsued space on the left. CellHorizontalAlignmentRight )
CellVerticalAlignment defines the table cell's vertical alignment.
type CellVerticalAlignment int
Table cells have three vertical alignment modes: top, middle and bottom.
const ( // CellVerticalAlignmentTop aligns cell content vertically to the top; unused space below. CellVerticalAlignmentTop CellVerticalAlignment = iota // CellVerticalAlignmentMiddle aligns cell content in the middle; unused space divided equally above and below. CellVerticalAlignmentMiddle // CellVerticalAlignmentBottom aligns cell content on the bottom; unused space above. CellVerticalAlignmentBottom )
Chapter is used to arrange multiple drawables (paragraphs, images, etc) into a single section. The concept is the same as a book or a report chapter.
type Chapter struct {
// contains filtered or unexported fields
}
func (chap *Chapter) Add(d Drawable) error
Add adds a new Drawable to the chapter.
func (chap *Chapter) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generate the Page blocks. Multiple blocks are generated if the contents wrap over multiple pages.
func (chap *Chapter) GetHeading() *Paragraph
GetHeading returns the chapter heading paragraph. Used to give access to address style: font, sizing etc.
func (chap *Chapter) GetMargins() (float64, float64, float64, float64)
GetMargins returns the Chapter's margin: left, right, top, bottom.
func (chap *Chapter) NewSubchapter(title string) *Chapter
NewSubchapter creates a new child chapter with the specified title.
func (chap *Chapter) SetIncludeInTOC(includeInTOC bool)
SetIncludeInTOC sets a flag to indicate whether or not to include in tOC.
func (chap *Chapter) SetMargins(left, right, top, bottom float64)
SetMargins sets the Chapter margins: left, right, top, bottom. Typically not needed as the creator's page margins are used.
func (chap *Chapter) SetShowNumbering(show bool)
SetShowNumbering sets a flag to indicate whether or not to show chapter numbers as part of title.
Color interface represents colors in the PDF creator.
type Color interface { ToRGB() (float64, float64, float64) }
func ColorCMYKFrom8bit(c, m, y, k byte) Color
ColorCMYKFrom8bit creates a Color from c,m,y,k values (0-100). Example:
red := ColorCMYKFrom8Bit(0, 100, 100, 0)
func ColorCMYKFromArithmetic(c, m, y, k float64) Color
ColorCMYKFromArithmetic creates a Color from arithmetic color values (0-1). Example:
green := ColorCMYKFromArithmetic(1.0, 0.0, 1.0, 0.0)
func ColorRGBFrom8bit(r, g, b byte) Color
ColorRGBFrom8bit creates a Color from 8-bit (0-255) r,g,b values. Example:
red := ColorRGBFrom8Bit(255, 0, 0)
func ColorRGBFromArithmetic(r, g, b float64) Color
ColorRGBFromArithmetic creates a Color from arithmetic color values (0-1). Example:
green := ColorRGBFromArithmetic(0.0, 1.0, 0.0)
func ColorRGBFromHex(hexStr string) Color
ColorRGBFromHex converts color hex code to rgb color for using with creator. NOTE: If there is a problem interpreting the string, then will use black color and log a debug message. Example hex code: #ffffff -> (1,1,1) white.
Creator is a wrapper around functionality for creating PDF reports and/or adding new content onto imported PDF pages, etc.
type Creator struct { // Controls whether a table of contents will be generated. AddTOC bool // Controls whether outlines will be generated. AddOutlines bool // contains filtered or unexported fields }
func New() *Creator
New creates a new instance of the PDF Creator.
func (c *Creator) AddPage(page *model.PdfPage) error
AddPage adds the specified page to the creator. NOTE: If the page has a Rotate flag, the creator will take care of transforming the contents to maintain the correct orientation.
func (c *Creator) Context() DrawContext
Context returns the current drawing context.
func (c *Creator) CreateFrontPage(genFrontPageFunc func(args FrontpageFunctionArgs))
CreateFrontPage sets a function to generate a front Page.
func (c *Creator) CreateTableOfContents(genTOCFunc func(toc *TOC) error)
CreateTableOfContents sets a function to generate table of contents.
func (c *Creator) Draw(d Drawable) error
Draw processes the specified Drawable widget and generates blocks that can be rendered to the output document. The generated blocks can span over one or more pages. Additional pages are added if the contents go over the current page. Each generated block is assigned to the creator page it will be rendered to. In order to render the generated blocks to the creator pages, call Finalize, Write or WriteToFile.
func (c *Creator) DrawFooter(drawFooterFunc func(footer *Block, args FooterFunctionArgs))
DrawFooter sets a function to draw a footer on created output pages.
func (c *Creator) DrawHeader(drawHeaderFunc func(header *Block, args HeaderFunctionArgs))
DrawHeader sets a function to draw a header on created output pages.
func (c *Creator) EnableFontSubsetting(font *model.PdfFont)
EnableFontSubsetting enables font subsetting for `font` when the creator output is written to file. Embeds only the subset of the runes/glyphs that are actually used to display the file. Subsetting can reduce the size of fonts significantly.
func (c *Creator) Finalize() error
Finalize renders all blocks to the creator pages. In addition, it takes care of adding headers and footers, as well as generating the front page, table of contents and outlines. Finalize is automatically called before writing the document out. Calling the method manually can be useful when adding external pages to the creator, using the AddPage method, as it renders all creator blocks to the added pages, without having to write the document out. NOTE: TOC and outlines are generated only if the AddTOC and AddOutlines fields of the creator are set to true (enabled by default). Furthermore, TOCs and outlines without content are skipped. TOC and outline content is added automatically when using the chapter component. TOCs and outlines can also be set externally, using the SetTOC and SetOutlineTree methods. Finalize should only be called once, after all draw calls have taken place, as it will return immediately if the creator instance has been finalized.
func (c *Creator) GetOptimizer() model.Optimizer
GetOptimizer returns current PDF optimizer.
func (c *Creator) Height() float64
Height returns the current page height.
func (c *Creator) MoveDown(dy float64)
MoveDown moves the drawing context down by relative displacement dy (negative goes up).
func (c *Creator) MoveRight(dx float64)
MoveRight moves the drawing context right by relative displacement dx (negative goes left).
func (c *Creator) MoveTo(x, y float64)
MoveTo moves the drawing context to absolute coordinates (x, y).
func (c *Creator) MoveX(x float64)
MoveX moves the drawing context to absolute position x.
func (c *Creator) MoveY(y float64)
MoveY moves the drawing context to absolute position y.
func (c *Creator) NewChapter(title string) *Chapter
NewChapter creates a new chapter with the specified title as the heading.
func (c *Creator) NewCurve(x1, y1, cx, cy, x2, y2 float64) *Curve
NewCurve returns new instance of Curve between points (x1,y1) and (x2, y2) with control point (cx,cy).
func (c *Creator) NewCurvePolygon(rings [][]draw.CubicBezierCurve) *CurvePolygon
NewCurvePolygon creates a new curve polygon.
func (c *Creator) NewDivision() *Division
NewDivision returns a new Division container component.
func (c *Creator) NewEllipse(xc, yc, width, height float64) *Ellipse
NewEllipse creates a new ellipse centered at (xc,yc) with a width and height specified.
func (c *Creator) NewFilledCurve() *FilledCurve
NewFilledCurve returns a instance of filled curve.
func (c *Creator) NewImage(img *model.Image) (*Image, error)
NewImage create a new image from a unidoc image (model.Image).
func (c *Creator) NewImageFromData(data []byte) (*Image, error)
NewImageFromData creates an Image from image data.
func (c *Creator) NewImageFromFile(path string) (*Image, error)
NewImageFromFile creates an Image from a file.
func (c *Creator) NewImageFromGoImage(goimg goimage.Image) (*Image, error)
NewImageFromGoImage creates an Image from a go image.Image data structure.
func (c *Creator) NewInvoice() *Invoice
NewInvoice returns an instance of an empty invoice.
func (c *Creator) NewLine(x1, y1, x2, y2 float64) *Line
NewLine creates a new Line with default parameters between (x1,y1) to (x2,y2).
func (c *Creator) NewList() *List
NewList creates a new list.
func (c *Creator) NewPage() *model.PdfPage
NewPage adds a new Page to the Creator and sets as the active Page.
func (c *Creator) NewPageBreak() *PageBreak
NewPageBreak create a new page break.
func (c *Creator) NewParagraph(text string) *Paragraph
NewParagraph creates a new text paragraph. Default attributes: Font: Helvetica, Font size: 10 Encoding: WinAnsiEncoding Wrap: enabled Text color: black
func (c *Creator) NewPolyBezierCurve(curves []draw.CubicBezierCurve) *PolyBezierCurve
NewPolyBezierCurve creates a new composite Bezier (polybezier) curve.
func (c *Creator) NewPolygon(points [][]draw.Point) *Polygon
NewPolygon creates a new polygon.
func (c *Creator) NewPolyline(points []draw.Point) *Polyline
NewPolyline creates a new polyline.
func (c *Creator) NewRectangle(x, y, width, height float64) *Rectangle
NewRectangle creates a new Rectangle with default parameters with left corner at (x,y) and width, height as specified.
func (c *Creator) NewStyledParagraph() *StyledParagraph
NewStyledParagraph creates a new styled paragraph. Default attributes: Font: Helvetica, Font size: 10 Encoding: WinAnsiEncoding Wrap: enabled Text color: black
func (c *Creator) NewStyledTOCLine(number, title, page TextChunk, level uint, style TextStyle) *TOCLine
NewStyledTOCLine creates a new table of contents line with the provided style.
func (c *Creator) NewTOC(title string) *TOC
NewTOC creates a new table of contents.
func (c *Creator) NewTOCLine(number, title, page string, level uint) *TOCLine
NewTOCLine creates a new table of contents line with the default style.
func (c *Creator) NewTable(cols int) *Table
NewTable create a new Table with a specified number of columns.
func (c *Creator) NewTextStyle() TextStyle
NewTextStyle creates a new text style object which can be used to style chunks of text. Default attributes: Font: Helvetica Font size: 10 Encoding: WinAnsiEncoding Text color: black
func (c *Creator) PageFinalize(pageFinalizeFunc func(args PageFinalizeFunctionArgs) error)
PageFinalize sets a function to be called for each page before finalization (i.e. the last stage of page processing before they get written out). The callback function allows final touch-ups for each page, and it provides information that might not be known at other stages of designing the document (e.g. the total number of pages). Unlike the header/footer functions, which are limited to the top/bottom margins of the page, the finalize function can be used draw components anywhere on the current page.
func (c *Creator) RotateDeg(angleDeg int64) error
RotateDeg rotates the current active page by angle degrees. An error is returned on failure, which can be if there is no currently active page, or the angleDeg is not a multiple of 90 degrees.
func (c *Creator) SetForms(form *model.PdfAcroForm) error
SetForms adds an Acroform to a PDF file. Sets the specified form for writing.
func (c *Creator) SetOptimizer(optimizer model.Optimizer)
SetOptimizer sets the optimizer to optimize PDF before writing.
func (c *Creator) SetOutlineTree(outlineTree *model.PdfOutlineTreeNode)
SetOutlineTree adds the specified outline tree to the PDF file generated by the creator. Adding an external outline tree disables the automatic generation of outlines done by the creator for the relevant components.
func (c *Creator) SetPageLabels(pageLabels core.PdfObject)
SetPageLabels adds the specified page labels to the PDF file generated by the creator. See section 12.4.2 "Page Labels" (p. 382 PDF32000_2008). NOTE: for existing PDF files, the page label ranges object can be obtained using the model.PDFReader's GetPageLabels method.
func (c *Creator) SetPageMargins(left, right, top, bottom float64)
SetPageMargins sets the page margins: left, right, top, bottom. The default page margins are 10% of document width.
func (c *Creator) SetPageSize(size PageSize)
SetPageSize sets the Creator's page size. Pages that are added after this will be created with this Page size. Does not affect pages already created.
Common page sizes are defined as constants. Examples: 1. c.SetPageSize(creator.PageSizeA4) 2. c.SetPageSize(creator.PageSizeA3) 3. c.SetPageSize(creator.PageSizeLegal) 4. c.SetPageSize(creator.PageSizeLetter)
For custom sizes: Use the PPMM (points per mm) and PPI (points per inch) when defining those based on physical page sizes:
Examples: 1. 10x15 sq. mm: SetPageSize(PageSize{10*creator.PPMM, 15*creator.PPMM}) where PPMM is points per mm. 2. 3x2 sq. inches: SetPageSize(PageSize{3*creator.PPI, 2*creator.PPI}) where PPI is points per inch.
func (c *Creator) SetPdfWriterAccessFunc(pdfWriterAccessFunc func(writer *model.PdfWriter) error)
SetPdfWriterAccessFunc sets a PdfWriter access function/hook. Exposes the PdfWriter just prior to writing the PDF. Can be used to encrypt the output PDF, etc.
Example of encrypting with a user/owner password "password" Prior to calling c.WriteFile():
c.SetPdfWriterAccessFunc(func(w *model.PdfWriter) error {
userPass := []byte("password") ownerPass := []byte("password") err := w.Encrypt(userPass, ownerPass, nil) return err
})
func (c *Creator) SetTOC(toc *TOC)
SetTOC sets the table of content component of the creator. This method should be used when building a custom table of contents.
func (c *Creator) TOC() *TOC
TOC returns the table of contents component of the creator.
func (c *Creator) Width() float64
Width returns the current page width.
func (c *Creator) Write(ws io.Writer) error
Write output of creator to io.Writer interface.
func (c *Creator) WriteToFile(outputPath string) error
WriteToFile writes the Creator output to file specified by path.
Curve represents a cubic Bezier curve with a control point.
type Curve struct {
// contains filtered or unexported fields
}
func (c *Curve) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the curve onto page blocks.
func (c *Curve) SetColor(col Color)
SetColor sets the line color.
func (c *Curve) SetWidth(width float64)
SetWidth sets line width.
CurvePolygon represents a curve polygon shape. Implements the Drawable interface and can be drawn on PDF using the Creator.
type CurvePolygon struct {
// contains filtered or unexported fields
}
func (p *CurvePolygon) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the composite curve polygon on a new block representing the page. Implements the Drawable interface.
func (p *CurvePolygon) SetBorderColor(color Color)
SetBorderColor sets the border color.
func (p *CurvePolygon) SetBorderOpacity(opacity float64)
SetBorderOpacity sets the border opacity.
func (p *CurvePolygon) SetBorderWidth(borderWidth float64)
SetBorderWidth sets the border width.
func (p *CurvePolygon) SetFillColor(color Color)
SetFillColor sets the fill color.
func (p *CurvePolygon) SetFillOpacity(opacity float64)
SetFillOpacity sets the fill opacity.
Division is a container component which can wrap across multiple pages (unlike Block). It can contain multiple Drawable components (currently supporting Paragraph and Image).
The component stacking behavior is vertical, where the Drawables are drawn on top of each other. Also supports horizontal stacking by activating the inline mode.
type Division struct {
// contains filtered or unexported fields
}
func (div *Division) Add(d VectorDrawable) error
Add adds a VectorDrawable to the Division container. Currently supported VectorDrawables: *Paragraph, *StyledParagraph, *Image.
func (div *Division) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generates the page blocks for the Division component. Multiple blocks are generated if the contents wrap over multiple pages.
func (div *Division) Height() float64
Height returns the height of the division, assuming all components are stacked on top of each other.
func (div *Division) Inline() bool
Inline returns whether the inline mode of the division is active.
func (div *Division) SetInline(inline bool)
SetInline sets the inline mode of the division.
func (div *Division) Width() float64
Width is not used. Not used as a Division element is designed to fill into available width depending on context. Returns 0.
DrawContext defines the drawing context. The DrawContext is continuously used and updated when drawing the page contents in relative mode. Keeps track of current X, Y position, available height as well as other page parameters such as margins and dimensions.
type DrawContext struct { // Current page number. Page int // Current position. In a relative positioning mode, a drawable will be placed at these coordinates. X, Y float64 // Context dimensions. Available width and height (on current page). Width, Height float64 // Page Margins. Margins Margins // Absolute Page size, widths and height. PageWidth float64 PageHeight float64 // Controls whether the components are stacked horizontally Inline bool }
Drawable is a widget that can be used to draw with the Creator.
type Drawable interface { // GeneratePageBlocks draw onto blocks representing Page contents. As the content can wrap over many pages, multiple // templates are returned, one per Page. The function also takes a draw context containing information // where to draw (if relative positioning) and the available height to draw on accounting for Margins etc. GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error) }
Ellipse defines an ellipse with a center at (xc,yc) and a specified width and height. The ellipse can have a colored fill and/or border with a specified width. Implements the Drawable interface and can be drawn on PDF using the Creator.
type Ellipse struct {
// contains filtered or unexported fields
}
func (ell *Ellipse) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the rectangle on a new block representing the page.
func (ell *Ellipse) GetCoords() (float64, float64)
GetCoords returns the coordinates of the Ellipse's center (xc,yc).
func (ell *Ellipse) SetBorderColor(col Color)
SetBorderColor sets the border color.
func (ell *Ellipse) SetBorderWidth(bw float64)
SetBorderWidth sets the border width.
func (ell *Ellipse) SetFillColor(col Color)
SetFillColor sets the fill color.
FilledCurve represents a closed path of Bezier curves with a border and fill.
type FilledCurve struct { FillEnabled bool // Show fill? BorderEnabled bool // Show border? BorderWidth float64 // contains filtered or unexported fields }
func (fc *FilledCurve) AppendCurve(curve draw.CubicBezierCurve) *FilledCurve
AppendCurve appends a Bezier curve to the filled curve.
func (fc *FilledCurve) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the filled curve on page blocks.
func (fc *FilledCurve) SetBorderColor(color Color)
SetBorderColor sets the border color for the path.
func (fc *FilledCurve) SetFillColor(color Color)
SetFillColor sets the fill color for the path.
FooterFunctionArgs holds the input arguments to a footer drawing function. It is designed as a struct, so additional parameters can be added in the future with backwards compatibility.
type FooterFunctionArgs struct { PageNum int TotalPages int }
FrontpageFunctionArgs holds the input arguments to a front page drawing function. It is designed as a struct, so additional parameters can be added in the future with backwards compatibility.
type FrontpageFunctionArgs struct { PageNum int TotalPages int }
HeaderFunctionArgs holds the input arguments to a header drawing function. It is designed as a struct, so additional parameters can be added in the future with backwards compatibility.
type HeaderFunctionArgs struct { PageNum int TotalPages int }
HorizontalAlignment represents the horizontal alignment of components within a page.
type HorizontalAlignment int
Horizontal alignment options.
const ( HorizontalAlignmentLeft HorizontalAlignment = iota HorizontalAlignmentCenter HorizontalAlignmentRight )
The Image type is used to draw an image onto PDF.
type Image struct {
// contains filtered or unexported fields
}
func (img *Image) ConvertToBinary() error
ConvertToBinary converts current image data into binary (Bi-level image) format. If provided image is RGB or GrayScale the function converts it into binary image using histogram auto threshold method.
func (img *Image) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generate the Page blocks. Draws the Image on a block, implementing the Drawable interface.
func (img *Image) GetHorizontalAlignment() HorizontalAlignment
GetHorizontalAlignment returns the horizontal alignment of the image.
func (img *Image) GetMargins() (float64, float64, float64, float64)
GetMargins returns the Image's margins: left, right, top, bottom.
func (img *Image) Height() float64
Height returns Image's document height.
func (img *Image) Scale(xFactor, yFactor float64)
Scale scales Image by a constant factor, both width and height.
func (img *Image) ScaleToHeight(h float64)
ScaleToHeight scale Image to a specified height h, maintaining the aspect ratio.
func (img *Image) ScaleToWidth(w float64)
ScaleToWidth scale Image to a specified width w, maintaining the aspect ratio.
func (img *Image) SetAngle(angle float64)
SetAngle sets Image rotation angle in degrees.
func (img *Image) SetEncoder(encoder core.StreamEncoder)
SetEncoder sets the encoding/compression mechanism for the image.
func (img *Image) SetHeight(h float64)
SetHeight sets the Image's document height to specified h.
func (img *Image) SetHorizontalAlignment(alignment HorizontalAlignment)
SetHorizontalAlignment sets the horizontal alignment of the image.
func (img *Image) SetMargins(left, right, top, bottom float64)
SetMargins sets the margins for the Image (in relative mode): left, right, top, bottom.
func (img *Image) SetOpacity(opacity float64)
SetOpacity sets opacity for Image.
func (img *Image) SetPos(x, y float64)
SetPos sets the absolute position. Changes object positioning to absolute.
func (img *Image) SetWidth(w float64)
SetWidth set the Image's document width to specified w. This does not change the raw image data, i.e. no actual scaling of data is performed. That is handled by the PDF viewer.
func (img *Image) Width() float64
Width returns Image's document width.
Invoice represents a configurable invoice template.
type Invoice struct {
// contains filtered or unexported fields
}
func (i *Invoice) AddInfo(description, value string) (*InvoiceCell, *InvoiceCell)
AddInfo is used to append a piece of invoice information in the template information table.
func (i *Invoice) AddLine(values ...string) []*InvoiceCell
AddLine appends a new line to the invoice line items table.
func (i *Invoice) AddSection(title, content string)
AddSection adds a new content section at the end of the invoice.
func (i *Invoice) AddTotalLine(desc, value string) (*InvoiceCell, *InvoiceCell)
AddTotalLine adds a new line in the invoice totals table.
func (i *Invoice) AddressHeadingStyle() TextStyle
AddressHeadingStyle returns the style properties used to render the heading of the invoice address sections.
func (i *Invoice) AddressStyle() TextStyle
AddressStyle returns the style properties used to render the content of the invoice address sections.
func (i *Invoice) AppendColumn(description string) *InvoiceCell
AppendColumn appends a column to the line items table.
func (i *Invoice) BuyerAddress() *InvoiceAddress
BuyerAddress returns the buyer address used in the invoice template.
func (i *Invoice) Columns() []*InvoiceCell
Columns returns all the columns in the invoice line items table.
func (i *Invoice) Date() (*InvoiceCell, *InvoiceCell)
Date returns the invoice date description and value cells. The returned values can be used to customize the styles of the cells.
func (i *Invoice) DueDate() (*InvoiceCell, *InvoiceCell)
DueDate returns the invoice due date description and value cells. The returned values can be used to customize the styles of the cells.
func (i *Invoice) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generate the Page blocks. Multiple blocks are generated if the contents wrap over multiple pages.
func (i *Invoice) InfoLines() [][2]*InvoiceCell
InfoLines returns all the rows in the invoice information table as description-value cell pairs.
func (i *Invoice) InsertColumn(index uint, description string) *InvoiceCell
InsertColumn inserts a column in the line items table at the specified index.
func (i *Invoice) Lines() [][]*InvoiceCell
Lines returns all the rows of the invoice line items table.
func (i *Invoice) Logo() *Image
Logo returns the logo of the invoice.
func (i *Invoice) NewCell(value string) *InvoiceCell
NewCell returns a new invoice table cell.
func (i *Invoice) NewCellProps() InvoiceCellProps
NewCellProps returns the default properties of an invoice cell.
func (i *Invoice) NewColumn(description string) *InvoiceCell
NewColumn returns a new column for the line items invoice table.
func (i *Invoice) NoteHeadingStyle() TextStyle
NoteHeadingStyle returns the style properties used to render the heading of the invoice note sections.
func (i *Invoice) NoteStyle() TextStyle
NoteStyle returns the style properties used to render the content of the invoice note sections.
func (i *Invoice) Notes() (string, string)
Notes returns the notes section of the invoice as a title-content pair.
func (i *Invoice) Number() (*InvoiceCell, *InvoiceCell)
Number returns the invoice number description and value cells. The returned values can be used to customize the styles of the cells.
func (i *Invoice) Sections() [][2]string
Sections returns the custom content sections of the invoice as title-content pairs.
func (i *Invoice) SellerAddress() *InvoiceAddress
SellerAddress returns the seller address used in the invoice template.
func (i *Invoice) SetAddressHeadingStyle(style TextStyle)
SetAddressHeadingStyle sets the style properties used to render the heading of the invoice address sections.
func (i *Invoice) SetAddressStyle(style TextStyle)
SetAddressStyle sets the style properties used to render the content of the invoice address sections.
func (i *Invoice) SetBuyerAddress(address *InvoiceAddress)
SetBuyerAddress sets the buyer address of the invoice.
func (i *Invoice) SetColumns(cols []*InvoiceCell)
SetColumns overwrites any columns in the line items table. This should be called before AddLine.
func (i *Invoice) SetDate(date string) (*InvoiceCell, *InvoiceCell)
SetDate sets the date of the invoice.
func (i *Invoice) SetDueDate(dueDate string) (*InvoiceCell, *InvoiceCell)
SetDueDate sets the due date of the invoice.
func (i *Invoice) SetLogo(logo *Image)
SetLogo sets the logo of the invoice.
func (i *Invoice) SetNoteHeadingStyle(style TextStyle)
SetNoteHeadingStyle sets the style properties used to render the heading of the invoice note sections.
func (i *Invoice) SetNoteStyle(style TextStyle)
SetNoteStyle sets the style properties used to render the content of the invoice note sections.
func (i *Invoice) SetNotes(title, content string)
SetNotes sets the notes section of the invoice.
func (i *Invoice) SetNumber(number string) (*InvoiceCell, *InvoiceCell)
SetNumber sets the number of the invoice.
func (i *Invoice) SetSellerAddress(address *InvoiceAddress)
SetSellerAddress sets the seller address of the invoice.
func (i *Invoice) SetSubtotal(value string)
SetSubtotal sets the subtotal of the invoice.
func (i *Invoice) SetTerms(title, content string)
SetTerms sets the terms and conditions section of the invoice.
func (i *Invoice) SetTitle(title string)
SetTitle sets the title of the invoice.
func (i *Invoice) SetTitleStyle(style TextStyle)
SetTitleStyle sets the style properties of the invoice title.
func (i *Invoice) SetTotal(value string)
SetTotal sets the total of the invoice.
func (i *Invoice) Subtotal() (*InvoiceCell, *InvoiceCell)
Subtotal returns the invoice subtotal description and value cells. The returned values can be used to customize the styles of the cells.
func (i *Invoice) Terms() (string, string)
Terms returns the terms and conditions section of the invoice as a title-content pair.
func (i *Invoice) Title() string
Title returns the title of the invoice.
func (i *Invoice) TitleStyle() TextStyle
TitleStyle returns the style properties used to render the invoice title.
func (i *Invoice) Total() (*InvoiceCell, *InvoiceCell)
Total returns the invoice total description and value cells. The returned values can be used to customize the styles of the cells.
func (i *Invoice) TotalLines() [][2]*InvoiceCell
TotalLines returns all the rows in the invoice totals table as description-value cell pairs.
InvoiceAddress contains contact information that can be displayed in an invoice. It is used for the seller and buyer information in the invoice template.
type InvoiceAddress struct { Heading string Name string Street string Street2 string Zip string City string State string Country string Phone string Email string // Separator defines the separator between different address components, // such as the city, state and zip code. It defaults to ", " when the // field is an empty string. Separator string // If enabled, the Phone field label (`Phone: `) is not displayed. HidePhoneLabel bool // If enabled, the Email field label (`Email: `) is not displayed. HideEmailLabel bool }
InvoiceCell represents any cell belonging to a table from the invoice template. The main tables are the invoice information table, the line items table and totals table. Contains the text value of the cell and the style properties of the cell.
type InvoiceCell struct { InvoiceCellProps Value string }
InvoiceCellProps holds all style properties for an invoice cell.
type InvoiceCellProps struct { TextStyle TextStyle Alignment CellHorizontalAlignment BackgroundColor Color BorderColor Color BorderWidth float64 BorderSides []CellBorderSide }
Line defines a line 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. Implements the Drawable interface and can be drawn on PDF using the Creator.
type Line struct {
// contains filtered or unexported fields
}
func (l *Line) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the line on a new block representing the page. Implements the Drawable interface.
func (l *Line) GetCoords() (float64, float64, float64, float64)
GetCoords returns the (x1, y1), (x2, y2) points defining the Line.
func (l *Line) Length() float64
Length calculates and returns the line length.
func (l *Line) SetColor(col Color)
SetColor sets the line color. Use ColorRGBFromHex, ColorRGBFrom8bit or ColorRGBFromArithmetic to make the color object.
func (l *Line) SetLineWidth(lw float64)
SetLineWidth sets the line width.
List represents a list of items. The representation of a list item is as follows:
[marker] [content]
e.g.: • This is the content of the item. The supported components to add content to list items are: - Paragraph - StyledParagraph - List
type List struct {
// contains filtered or unexported fields
}
func (l *List) Add(item VectorDrawable) (*TextChunk, error)
Add appends a new item to the list. The supported components are: *Paragraph, *StyledParagraph and *List. Returns the marker used for the newly added item. The returned marker object can be used to change the text and style of the marker for the current item.
func (l *List) AddTextItem(text string) (*StyledParagraph, *TextChunk, error)
AddTextItem appends a new item with the specified text to the list. The method creates a styled paragraph with the specified text and returns it so that the item style can be customized. The method also returns the marker used for the newly added item. The marker object can be used to change the text and style of the marker for the current item.
func (l *List) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generate the Page blocks. Multiple blocks are generated if the contents wrap over multiple pages.
func (l *List) Height() float64
Height returns the height of the list.
func (l *List) Indent() float64
Indent returns the left offset of the list when nested into another list.
func (l *List) Margins() (float64, float64, float64, float64)
Margins returns the margins of the list: left, right, top, bottom.
func (l *List) Marker() *TextChunk
Marker returns the marker used for the list items. The marker instance can be used the change the text and the style of newly added list items.
func (l *List) SetIndent(indent float64)
SetIndent sets the left offset of the list when nested into another list.
func (l *List) SetMargins(left, right, top, bottom float64)
SetMargins sets the margins of the paragraph.
func (l *List) Width() float64
Width is not used. The list component is designed to fill into the available width depending on the context. Returns 0.
Margins represents page margins or margins around an element.
type Margins struct { Left float64 Right float64 Top float64 Bottom float64 }
PageBreak represents a page break for a chapter.
type PageBreak struct { }
func (p *PageBreak) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generates a page break block.
PageFinalizeFunctionArgs holds the input arguments provided to the page finalize callback function which can be set using Creator.PageFinalize.
type PageFinalizeFunctionArgs struct { PageNum int // the current page number. PageWidth float64 // the width of the page. PageHeight float64 // the height of the page. TOCPages int // the number of TOC pages. TotalPages int // the total number of pages. }
PageSize represents the page size as a 2 element array representing the width and height in PDF document units (points).
type PageSize [2]float64
Paragraph represents text drawn with a specified font and can wrap across lines and pages. By default it occupies the available width in the drawing context.
type Paragraph struct {
// contains filtered or unexported fields
}
func (p *Paragraph) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generates the page blocks. Multiple blocks are generated if the contents wrap over multiple pages. Implements the Drawable interface.
func (p *Paragraph) GetMargins() (float64, float64, float64, float64)
GetMargins returns the Paragraph's margins: left, right, top, bottom.
func (p *Paragraph) Height() float64
Height returns the height of the Paragraph. The height is calculated based on the input text and how it is wrapped within the container. Does not include Margins.
func (p *Paragraph) SetAngle(angle float64)
SetAngle sets the rotation angle of the text.
func (p *Paragraph) SetColor(col Color)
SetColor sets the color of the Paragraph text.
Example: 1. p := NewParagraph("Red paragraph")
// Set to red color with a hex code: p.SetColor(creator.ColorRGBFromHex("#ff0000"))
2. Make Paragraph green with 8-bit rgb values (0-255 each component)
p.SetColor(creator.ColorRGBFrom8bit(0, 255, 0)
3. Make Paragraph blue with arithmetic (0-1) rgb components.
p.SetColor(creator.ColorRGBFromArithmetic(0, 0, 1.0)
func (p *Paragraph) SetEnableWrap(enableWrap bool)
SetEnableWrap sets the line wrapping enabled flag.
func (p *Paragraph) SetFont(font *model.PdfFont)
SetFont sets the Paragraph's font.
func (p *Paragraph) SetFontSize(fontSize float64)
SetFontSize sets the font size in document units (points).
func (p *Paragraph) SetLineHeight(lineheight float64)
SetLineHeight sets the line height (1.0 default).
func (p *Paragraph) SetMargins(left, right, top, bottom float64)
SetMargins sets the Paragraph's margins.
func (p *Paragraph) SetMaxLines(maxLines int)
SetMaxLines sets the maximum number of lines before the paragraph text is truncated.
func (p *Paragraph) SetPos(x, y float64)
SetPos sets absolute positioning with specified coordinates.
func (p *Paragraph) SetText(text string)
SetText sets the text content of the Paragraph.
func (p *Paragraph) SetTextAlignment(align TextAlignment)
SetTextAlignment sets the horizontal alignment of the text within the space provided.
func (p *Paragraph) SetWidth(width float64)
SetWidth sets the the Paragraph width. This is essentially the wrapping width, i.e. the width the text can extend to prior to wrapping over to next line.
func (p *Paragraph) Text() string
Text sets the text content of the Paragraph.
func (p *Paragraph) Width() float64
Width returns the width of the Paragraph.
PolyBezierCurve represents a composite curve that is the result of joining multiple cubic Bezier curves. Implements the Drawable interface and can be drawn on PDF using the Creator.
type PolyBezierCurve struct {
// contains filtered or unexported fields
}
func (p *PolyBezierCurve) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the composite Bezier curve on a new block representing the page. Implements the Drawable interface.
func (p *PolyBezierCurve) SetBorderColor(color Color)
SetBorderColor sets the border color.
func (p *PolyBezierCurve) SetBorderOpacity(opacity float64)
SetBorderOpacity sets the border opacity.
func (p *PolyBezierCurve) SetBorderWidth(borderWidth float64)
SetBorderWidth sets the border width.
func (p *PolyBezierCurve) SetFillColor(color Color)
SetFillColor sets the fill color.
func (p *PolyBezierCurve) SetFillOpacity(opacity float64)
SetFillOpacity sets the fill opacity.
Polygon represents a polygon shape. Implements the Drawable interface and can be drawn on PDF using the Creator.
type Polygon struct {
// contains filtered or unexported fields
}
func (p *Polygon) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the polygon on a new block representing the page. Implements the Drawable interface.
func (p *Polygon) SetBorderColor(color Color)
SetBorderColor sets the border color.
func (p *Polygon) SetBorderOpacity(opacity float64)
SetBorderOpacity sets the border opacity.
func (p *Polygon) SetBorderWidth(borderWidth float64)
SetBorderWidth sets the border width.
func (p *Polygon) SetFillColor(color Color)
SetFillColor sets the fill color.
func (p *Polygon) SetFillOpacity(opacity float64)
SetFillOpacity sets the fill opacity.
Polyline represents a slice of points that are connected as straight lines. Implements the Drawable interface and can be rendered using the Creator.
type Polyline struct {
// contains filtered or unexported fields
}
func (p *Polyline) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the polyline on a new block representing the page. Implements the Drawable interface.
func (p *Polyline) SetLineColor(color Color)
SetLineColor sets the line color.
func (p *Polyline) SetLineOpacity(opacity float64)
SetLineOpacity sets the line opacity.
func (p *Polyline) SetLineWidth(lineWidth float64)
SetLineWidth sets the line width.
Positioning represents the positioning type for drawing creator components (relative/absolute).
type Positioning int
const ( // PositionRelative represents relative positioning. PositionRelative Positioning = iota // PositionAbsolute represents absolute positioning. PositionAbsolute )
func (p Positioning) IsAbsolute() bool
IsAbsolute checks if the positioning is absolute.
func (p Positioning) IsRelative() bool
IsRelative checks if the positioning is relative.
Rectangle defines a rectangle with upper left corner at (x,y) and a specified width and height. The rectangle can have a colored fill and/or border with a specified width. Implements the Drawable interface and can be drawn on PDF using the Creator.
type Rectangle struct {
// contains filtered or unexported fields
}
func (rect *Rectangle) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks draws the rectangle on a new block representing the page. Implements the Drawable interface.
func (rect *Rectangle) GetCoords() (float64, float64)
GetCoords returns coordinates of the Rectangle's upper left corner (x,y).
func (rect *Rectangle) SetBorderColor(col Color)
SetBorderColor sets border color.
func (rect *Rectangle) SetBorderOpacity(opacity float64)
SetBorderOpacity sets the border opacity.
func (rect *Rectangle) SetBorderWidth(bw float64)
SetBorderWidth sets the border width.
func (rect *Rectangle) SetFillColor(col Color)
SetFillColor sets the fill color.
func (rect *Rectangle) SetFillOpacity(opacity float64)
SetFillOpacity sets the fill opacity.
StyledParagraph represents text drawn with a specified font and can wrap across lines and pages. By default occupies the available width in the drawing context.
type StyledParagraph struct {
// contains filtered or unexported fields
}
func (p *StyledParagraph) AddExternalLink(text, url string) *TextChunk
AddExternalLink adds a new external link to the paragraph. The text parameter represents the text that is displayed and the url parameter sets the destionation of the link.
func (p *StyledParagraph) AddInternalLink(text string, page int64, x, y, zoom float64) *TextChunk
AddInternalLink adds a new internal link to the paragraph. The text parameter represents the text that is displayed. The user is taken to the specified page, at the specified x and y coordinates. Position 0, 0 is at the top left of the page. The zoom of the destination page is controlled with the zoom parameter. Pass in 0 to keep the current zoom value.
func (p *StyledParagraph) Append(text string) *TextChunk
Append adds a new text chunk to the paragraph.
func (p *StyledParagraph) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generates the page blocks. Multiple blocks are generated if the contents wrap over multiple pages. Implements the Drawable interface.
func (p *StyledParagraph) GetMargins() (float64, float64, float64, float64)
GetMargins returns the Paragraph's margins: left, right, top, bottom.
func (p *StyledParagraph) Height() float64
Height returns the height of the Paragraph. The height is calculated based on the input text and how it is wrapped within the container. Does not include Margins.
func (p *StyledParagraph) Insert(index uint, text string) *TextChunk
Insert adds a new text chunk at the specified position in the paragraph.
func (p *StyledParagraph) Reset()
Reset removes all the text chunks the paragraph contains.
func (p *StyledParagraph) SetAngle(angle float64)
SetAngle sets the rotation angle of the text.
func (p *StyledParagraph) SetEnableWrap(enableWrap bool)
SetEnableWrap sets the line wrapping enabled flag.
func (p *StyledParagraph) SetLineHeight(lineheight float64)
SetLineHeight sets the line height (1.0 default).
func (p *StyledParagraph) SetMargins(left, right, top, bottom float64)
SetMargins sets the Paragraph's margins.
func (p *StyledParagraph) SetPos(x, y float64)
SetPos sets absolute positioning with specified coordinates.
func (p *StyledParagraph) SetText(text string) *TextChunk
SetText replaces all the text of the paragraph with the specified one.
func (p *StyledParagraph) SetTextAlignment(align TextAlignment)
SetTextAlignment sets the horizontal alignment of the text within the space provided.
func (p *StyledParagraph) SetTextOverflow(textOverflow TextOverflow)
SetTextOverflow controls the behavior of paragraph text which does not fit in the available space.
func (p *StyledParagraph) SetTextVerticalAlignment(align TextVerticalAlignment)
SetTextVerticalAlignment sets the vertical alignment of the text within the bounds of the styled paragraph.
func (p *StyledParagraph) SetWidth(width float64)
SetWidth sets the the Paragraph width. This is essentially the wrapping width, i.e. the width the text can extend to prior to wrapping over to next line.
func (p *StyledParagraph) Width() float64
Width returns the width of the Paragraph.
TOC represents a table of contents component. It consists of a paragraph heading and a collection of table of contents lines. The representation of a table of contents line is as follows:
[number] [title] [separator] [page]
e.g.: Chapter1 Introduction ........... 1
type TOC struct {
// contains filtered or unexported fields
}
func (t *TOC) Add(number, title, page string, level uint) *TOCLine
Add adds a new line with the default style to the table of contents.
func (t *TOC) AddLine(line *TOCLine) *TOCLine
AddLine adds a new line with the provided style to the table of contents.
func (t *TOC) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generate the Page blocks. Multiple blocks are generated if the contents wrap over multiple pages.
func (t *TOC) Heading() *StyledParagraph
Heading returns the heading component of the table of contents.
func (t *TOC) Lines() []*TOCLine
Lines returns all the lines the table of contents has.
func (t *TOC) SetHeading(text string, style TextStyle)
SetHeading sets the text and the style of the heading of the TOC component.
func (t *TOC) SetLineLevelOffset(levelOffset float64)
SetLineLevelOffset sets the amount of space an indentation level occupies for all new lines of the table of contents.
func (t *TOC) SetLineMargins(left, right, top, bottom float64)
SetLineMargins sets the margins for all new lines of the table of contents.
func (t *TOC) SetLineNumberStyle(style TextStyle)
SetLineNumberStyle sets the style for the numbers part of all new lines of the table of contents.
func (t *TOC) SetLinePageStyle(style TextStyle)
SetLinePageStyle sets the style for the page part of all new lines of the table of contents.
func (t *TOC) SetLineSeparator(separator string)
SetLineSeparator sets the separator for all new lines of the table of contents.
func (t *TOC) SetLineSeparatorStyle(style TextStyle)
SetLineSeparatorStyle sets the style for the separator part of all new lines of the table of contents.
func (t *TOC) SetLineStyle(style TextStyle)
SetLineStyle sets the style for all the line components: number, title, separator, page. The style is applied only for new lines added to the TOC component.
func (t *TOC) SetLineTitleStyle(style TextStyle)
SetLineTitleStyle sets the style for the title part of all new lines of the table of contents.
func (t *TOC) SetShowLinks(showLinks bool)
SetShowLinks sets visibility of links for the TOC lines.
TOCLine represents a line in a table of contents. The component can be used both in the context of a table of contents component and as a standalone component. The representation of a table of contents line is as follows:
[number] [title] [separator] [page]
e.g.: Chapter1 Introduction ........... 1
type TOCLine struct { // Holds the text and style of the number part of the TOC line. Number TextChunk // Holds the text and style of the title part of the TOC line. Title TextChunk // Holds the text and style of the separator part of the TOC line. Separator TextChunk // Holds the text and style of the page part of the TOC line. Page TextChunk // contains filtered or unexported fields }
func (tl *TOCLine) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generate the Page blocks. Multiple blocks are generated if the contents wrap over multiple pages.
func (tl *TOCLine) GetMargins() (float64, float64, float64, float64)
GetMargins returns the margins of the TOC line: left, right, top, bottom.
func (tl *TOCLine) Level() uint
Level returns the indentation level of the TOC line.
func (tl *TOCLine) LevelOffset() float64
LevelOffset returns the amount of space an indentation level occupies.
func (tl *TOCLine) SetLevel(level uint)
SetLevel sets the indentation level of the TOC line.
func (tl *TOCLine) SetLevelOffset(levelOffset float64)
SetLevelOffset sets the amount of space an indentation level occupies.
func (tl *TOCLine) SetLink(page int64, x, y float64)
SetLink makes the line an internal link. The text parameter represents the text that is displayed. The user is taken to the specified page, at the specified x and y coordinates. Position 0, 0 is at the top left of the page.
func (tl *TOCLine) SetMargins(left, right, top, bottom float64)
SetMargins sets the margins TOC line.
func (tl *TOCLine) SetStyle(style TextStyle)
SetStyle sets the style for all the line components: number, title, separator, page.
Table allows organizing content in an rows X columns matrix, which can spawn across multiple pages.
type Table struct {
// contains filtered or unexported fields
}
func (table *Table) AddSubtable(row, col int, subtable *Table)
AddSubtable copies the cells of the subtable in the table, starting with the specified position. The table row and column indices are 1-based, which makes the position of the first cell of the first row of the table 1,1. The table is automatically extended if the subtable exceeds its columns. This can happen when the subtable has more columns than the table or when one or more columns of the subtable starting from the specified position exceed the last column of the table.
func (table *Table) Cols() int
Cols returns the total number of columns the table has.
func (table *Table) CurCol() int
CurCol returns the currently active cell's column number.
func (table *Table) CurRow() int
CurRow returns the currently active cell's row number.
func (table *Table) EnableRowWrap(enable bool)
EnableRowWrap enables/disables row wrapping across pages. NOTE: Currently, row wrapping is supported for rows using StyledParagraphs.
func (table *Table) GeneratePageBlocks(ctx DrawContext) ([]*Block, DrawContext, error)
GeneratePageBlocks generates the table page blocks. Multiple blocks are generated if the contents wrap over multiple pages. Implements the Drawable interface.
func (table *Table) GetMargins() (float64, float64, float64, float64)
GetMargins returns the left, right, top, bottom Margins.
func (table *Table) GetRowHeight(row int) (float64, error)
GetRowHeight returns the height of the specified row.
func (table *Table) Height() float64
Height returns the total height of all rows.
func (table *Table) MultiCell(rowspan, colspan int) *TableCell
MultiCell makes a new cell with the specified row span and col span and inserts it into the table at the current position.
func (table *Table) MultiColCell(colspan int) *TableCell
MultiColCell makes a new cell with the specified column span and inserts it into the table at the current position.
func (table *Table) MultiRowCell(rowspan int) *TableCell
MultiRowCell makes a new cell with the specified row span and inserts it into the table at the current position.
func (table *Table) NewCell() *TableCell
NewCell makes a new cell and inserts it into the table at the current position.
func (table *Table) Rows() int
Rows returns the total number of rows the table has.
func (table *Table) SetColumnWidths(widths ...float64) error
SetColumnWidths sets the fractional column widths. Each width should be in the range 0-1 and is a fraction of the table width. The number of width inputs must match number of columns, otherwise an error is returned.
func (table *Table) SetHeaderRows(startRow, endRow int) error
SetHeaderRows turns the selected table rows into headers that are repeated for every page the table spans. startRow and endRow are inclusive.
func (table *Table) SetMargins(left, right, top, bottom float64)
SetMargins sets the Table's left, right, top, bottom margins.
func (table *Table) SetPos(x, y float64)
SetPos sets the Table's positioning to absolute mode and specifies the upper-left corner coordinates as (x,y). Note that this is only sensible to use when the table does not wrap over multiple pages. TODO: Should be able to set width too (not just based on context/relative positioning mode).
func (table *Table) SetRowHeight(row int, h float64) error
SetRowHeight sets the height for a specified row.
func (table *Table) SkipCells(num int)
SkipCells skips over a specified number of cells in the table.
func (table *Table) SkipOver(rows, cols int)
SkipOver skips over a specified number of rows and cols.
func (table *Table) SkipRows(num int)
SkipRows skips over a specified number of rows in the table.
func (table *Table) Width() float64
Width is not used. Not used as a Table element is designed to fill into available width depending on the context. Returns 0.
TableCell defines a table cell which can contain a Drawable as content.
type TableCell struct {
// contains filtered or unexported fields
}
func (cell *TableCell) SetBackgroundColor(col Color)
SetBackgroundColor sets the cell's background color.
func (cell *TableCell) SetBorder(side CellBorderSide, style CellBorderStyle, width float64)
SetBorder sets the cell's border style.
func (cell *TableCell) SetBorderColor(col Color)
SetBorderColor sets the cell's border color.
func (cell *TableCell) SetBorderLineStyle(style draw.LineStyle)
SetBorderLineStyle sets border style (currently dashed or plain).
func (cell *TableCell) SetContent(vd VectorDrawable) error
SetContent sets the cell's content. The content is a VectorDrawable, i.e. a Drawable with a known height and width. The currently supported VectorDrawable is: *Paragraph, *StyledParagraph.
func (cell *TableCell) SetHorizontalAlignment(halign CellHorizontalAlignment)
SetHorizontalAlignment sets the cell's horizontal alignment of content. Can be one of: - CellHorizontalAlignmentLeft - CellHorizontalAlignmentCenter - CellHorizontalAlignmentRight
func (cell *TableCell) SetIndent(indent float64)
SetIndent sets the cell's left indent.
func (cell *TableCell) SetSideBorderColor(side CellBorderSide, col Color)
SetSideBorderColor sets the cell's side border color.
func (cell *TableCell) SetVerticalAlignment(valign CellVerticalAlignment)
SetVerticalAlignment set the cell's vertical alignment of content. Can be one of: - CellHorizontalAlignmentTop - CellHorizontalAlignmentMiddle - CellHorizontalAlignmentBottom
func (cell *TableCell) Width(ctx DrawContext) float64
Width returns the cell's width based on the input draw context.
TextAlignment options for paragraph.
type TextAlignment int
The options supported for text alignment are: left - TextAlignmentLeft right - TextAlignmentRight center - TextAlignmentCenter justify - TextAlignmentJustify
const ( TextAlignmentLeft TextAlignment = iota TextAlignmentRight TextAlignmentCenter TextAlignmentJustify )
TextChunk represents a chunk of text along with a particular style.
type TextChunk struct { // The text that is being rendered in the PDF. Text string // The style of the text being rendered. Style TextStyle // contains filtered or unexported fields }
func NewTextChunk(text string, style TextStyle) *TextChunk
NewTextChunk returns a new text chunk instance.
func (tc *TextChunk) Fit(width, height float64) (*TextChunk, error)
Fit fits the chunk into the specified bounding box, cropping off the remainder in a new chunk, if it exceeds the specified dimensions. NOTE: The method assumes a line height of 1.0. In order to account for other line height values, the passed in height must be divided by the line height: height = height / lineHeight
func (tc *TextChunk) SetAnnotation(annotation *model.PdfAnnotation)
SetAnnotation sets a annotation on a TextChunk.
func (tc *TextChunk) Wrap(width float64) ([]string, error)
Wrap wraps the text of the chunk into lines based on its style and the specified width.
TextDecorationLineStyle represents the style of lines used to decorate a text chunk (e.g. underline).
type TextDecorationLineStyle struct { // Color represents the color of the line (default: the color of the text). Color Color // Offset represents the vertical offset of the line (default: 1). Offset float64 // Thickness represents the thickness of the line (default: 1). Thickness float64 }
TextOverflow determines the behavior of paragraph text which does not fit in the available space.
type TextOverflow int
Text overflow options.
const ( TextOverflowVisible TextOverflow = iota TextOverflowHidden )
TextRenderingMode determines whether showing text shall cause glyph outlines to be stroked, filled, used as a clipping boundary, or some combination of the three. See section 9.3 "Text State Parameters and Operators" and Table 106 (pp. 254-255 PDF32000_2008).
type TextRenderingMode int
const ( // TextRenderingModeFill (default) - Fill text. TextRenderingModeFill TextRenderingMode = iota // TextRenderingModeStroke - Stroke text. TextRenderingModeStroke // TextRenderingModeFillStroke - Fill, then stroke text. TextRenderingModeFillStroke // TextRenderingModeInvisible - Neither fill nor stroke text (invisible). TextRenderingModeInvisible // TextRenderingModeFillClip - Fill text and add to path for clipping. TextRenderingModeFillClip // TextRenderingModeStrokeClip - Stroke text and add to path for clipping. TextRenderingModeStrokeClip // TextRenderingModeFillStrokeClip - Fill, then stroke text and add to path for clipping. TextRenderingModeFillStrokeClip // TextRenderingModeClip - Add text to path for clipping. TextRenderingModeClip )
TextStyle is a collection of properties that can be assigned to a text chunk.
type TextStyle struct { // Color represents the color of the text. Color Color // OutlineColor represents the color of the text outline. OutlineColor Color // Font represents the font the text will use. Font *model.PdfFont // FontSize represents the size of the font. FontSize float64 // OutlineSize represents the thickness of the text outline. OutlineSize float64 // CharSpacing represents the character spacing. CharSpacing float64 // HorizontalScaling represents the percentage to horizontally scale // characters by (default: 100). Values less than 100 will result in // narrower text while values greater than 100 will result in wider text. HorizontalScaling float64 // RenderingMode represents the rendering mode. RenderingMode TextRenderingMode // Underline specifies if the text chunk is underlined. Underline bool // UnderlineStyle represents the style of the line used to underline text. UnderlineStyle TextDecorationLineStyle // TextRise specifies a vertical adjustment for text. It is useful for // drawing subscripts/superscripts. A positive text rise value will // produce superscript text, while a negative one will result in // subscript text. TextRise float64 }
TextVerticalAlignment controls the vertical position of the text in a styled paragraph.
type TextVerticalAlignment int
Text vertical alignment options.
const ( TextVerticalAlignmentBaseline TextVerticalAlignment = iota TextVerticalAlignmentCenter )
VectorDrawable is a Drawable with a specified width and height.
type VectorDrawable interface { Drawable // Width returns the width of the Drawable. Width() float64 // Height returns the height of the Drawable. Height() float64 }