Class PDFCanvas
- java.lang.Object
-
- net.codecrete.qrbill.canvas.AbstractCanvas
-
- net.codecrete.qrbill.canvas.PDFCanvas
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,ByteArrayResult,Canvas
public class PDFCanvas extends AbstractCanvas implements ByteArrayResult
Canvas for generating PDF files.The PDF generator currently only supports the Helvetica font.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface net.codecrete.qrbill.canvas.Canvas
Canvas.LineStyle
-
-
Field Summary
Fields Modifier and Type Field Description static intLAST_PAGEAdd the QR bill on the last page of the PDF document.static intNEW_PAGE_AT_ENDAdd the QR bill on a new page at the end of the PDF document.-
Fields inherited from class net.codecrete.qrbill.canvas.AbstractCanvas
MM_TO_PT
-
-
Constructor Summary
Constructors Constructor Description PDFCanvas(byte[] pdfDocument, int pageNo)Creates a new instance for adding the QR bill to an exiting PDF document.PDFCanvas(double width, double height)Creates a new instance using the specified page size.PDFCanvas(java.nio.file.Path path, int pageNo)Creates a new instance for adding the QR bill to an exiting PDF document.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddRectangle(double x, double y, double width, double height)Adds a rectangle to the pathvoidclose()voidcloseSubpath()Closes the current subpathvoidcubicCurveTo(double x1, double y1, double x2, double y2, double x, double y)Adds a cubic Beziér curve to the open path going from the previous point to the specified position.voidfillPath(int color)Fills the current path and ends itvoidlineTo(double x, double y)Adds a line segment to the open path from the previous point to the specified position.voidmoveTo(double x, double y)Moves the current point of the open path to the specified position.voidputText(java.lang.String text, double x, double y, int fontSize, boolean isBold)Adds text to the graphics.voidputTextLines(java.lang.String[] lines, double x, double y, int fontSize, double leading)Adds several lines of text to the graphics.voidsaveAs(java.nio.file.Path path)Saves the resulting PDF document to the specified path.voidsetTransformation(double translateX, double translateY, double rotate, double scaleX, double scaleY)Sets a translation, rotation and scaling for the subsequent operationsvoidstartPath()Starts a path that can be filled or strokedvoidstrokePath(double strokeWidth, int color)Strokes the current path and ends itvoidstrokePath(double strokeWidth, int color, Canvas.LineStyle lineStyle)Strokes the current path and ends itbyte[]toByteArray()Gets the resulting graphics as a byte array.voidwriteTo(java.io.OutputStream os)Writes the resulting PDF document to the specified output stream.-
Methods inherited from class net.codecrete.qrbill.canvas.AbstractCanvas
getAscender, getDescender, getLineHeight, getTextWidth, setupFontMetrics, splitLines
-
-
-
-
Field Detail
-
LAST_PAGE
public static final int LAST_PAGE
Add the QR bill on the last page of the PDF document.- See Also:
- Constant Field Values
-
NEW_PAGE_AT_END
public static final int NEW_PAGE_AT_END
Add the QR bill on a new page at the end of the PDF document.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
PDFCanvas
public PDFCanvas(double width, double height) throws java.io.IOExceptionCreates a new instance using the specified page size.- Parameters:
width- page width, in mmheight- page height, in mm- Throws:
java.io.IOException- thrown if the creation fails
-
PDFCanvas
public PDFCanvas(java.nio.file.Path path, int pageNo) throws java.io.IOExceptionCreates a new instance for adding the QR bill to an exiting PDF document.The QR bill can either be added to an existing page by specifying the page number of an existing page (or
LAST_PAGE), or it can be added to a new page at the end of the document (seeNEW_PAGE_AT_END).The created instance assumes that the page for the QR bill has A4 format and will add the QR bill at the bottom of the page.
- Parameters:
path- path to exiting documentpageNo- the zero-based number of the page the QR bill should be added to- Throws:
java.io.IOException- thrown if the creation fails
-
PDFCanvas
public PDFCanvas(byte[] pdfDocument, int pageNo) throws java.io.IOExceptionCreates a new instance for adding the QR bill to an exiting PDF document.The QR bill can either be added to an existing page by specifying the page number of an existing page (or
LAST_PAGE), or it can be added to a new page at the end of the document (seeNEW_PAGE_AT_END).The created instance assumes that the page for the QR bill has A4 format and will add the QR bill at the bottom of the page.
- Parameters:
pdfDocument- binary array contianing PDF documentpageNo- the zero-based number of the page the QR bill should be added to- Throws:
java.io.IOException- thrown if the creation fails
-
-
Method Detail
-
setTransformation
public void setTransformation(double translateX, double translateY, double rotate, double scaleX, double scaleY) throws java.io.IOExceptionDescription copied from interface:CanvasSets a translation, rotation and scaling for the subsequent operationsBefore a new translation is applied, the coordinate system is reset to it's original state.
The transformations are applied in the order translation, rotation, scaling.
- Specified by:
setTransformationin interfaceCanvas- Parameters:
translateX- translation in x direction (in mm)translateY- translation in y direction (in mm)rotate- rotation angle, in radiansscaleX- scale factor in x direction (1.0 = no scaling)scaleY- scale factor in y direction (1.0 = no scaling)- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
putText
public void putText(java.lang.String text, double x, double y, int fontSize, boolean isBold) throws java.io.IOExceptionDescription copied from interface:CanvasAdds text to the graphics.The text position refers to the left most point on the text's baseline.
- Specified by:
putTextin interfaceCanvas- Parameters:
text- the textx- x position of the text's start (in mm)y- y position of the text's top (in mm)fontSize- the font size (in pt)isBold- indicates if the text is in bold or regular weight- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
putTextLines
public void putTextLines(java.lang.String[] lines, double x, double y, int fontSize, double leading) throws java.io.IOExceptionDescription copied from interface:CanvasAdds several lines of text to the graphics.The text position refers to the left most point on the baseline of the first text line. Additional lines then follow below.
- Specified by:
putTextLinesin interfaceCanvas- Overrides:
putTextLinesin classAbstractCanvas- Parameters:
lines- the text linesx- x position of the text's start (in mm)y- y position of the text's top (in mm)fontSize- the font size (in pt)leading- additional vertical space between text lines (in mm)- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
startPath
public void startPath()
Description copied from interface:CanvasStarts a path that can be filled or stroked
-
moveTo
public void moveTo(double x, double y) throws java.io.IOExceptionDescription copied from interface:CanvasMoves the current point of the open path to the specified position.
-
lineTo
public void lineTo(double x, double y) throws java.io.IOExceptionDescription copied from interface:CanvasAdds a line segment to the open path from the previous point to the specified position.
-
cubicCurveTo
public void cubicCurveTo(double x1, double y1, double x2, double y2, double x, double y) throws java.io.IOExceptionDescription copied from interface:CanvasAdds a cubic Beziér curve to the open path going from the previous point to the specified position. Two control points control the curve- Specified by:
cubicCurveToin interfaceCanvas- Parameters:
x1- x-coordinate of first control pointy1- y-coordinate of first control pointx2- x-coordinate of second control pointy2- y-coordinate of second control pointx- x-coordinate of positiony- y-coordinate of position- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
addRectangle
public void addRectangle(double x, double y, double width, double height) throws java.io.IOExceptionDescription copied from interface:CanvasAdds a rectangle to the path- Specified by:
addRectanglein interfaceCanvas- Parameters:
x- the rectangle's left position (in mm)y- the rectangle's top position (in mm)width- the rectangle's width (in mm)height- rectangle's height (in mm)- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
closeSubpath
public void closeSubpath() throws java.io.IOExceptionDescription copied from interface:CanvasCloses the current subpath- Specified by:
closeSubpathin interfaceCanvas- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
fillPath
public void fillPath(int color) throws java.io.IOExceptionDescription copied from interface:CanvasFills the current path and ends it
-
strokePath
public void strokePath(double strokeWidth, int color) throws java.io.IOExceptionDescription copied from interface:CanvasStrokes the current path and ends itThe path is stroked with a solid line.
- Specified by:
strokePathin interfaceCanvas- Parameters:
strokeWidth- the stroke width (in pt)color- the stroke color (expressed similar to HTML, e.g. 0xffffff for white)- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
strokePath
public void strokePath(double strokeWidth, int color, Canvas.LineStyle lineStyle) throws java.io.IOExceptionDescription copied from interface:CanvasStrokes the current path and ends it- Specified by:
strokePathin interfaceCanvas- Parameters:
strokeWidth- the stroke width (in pt)color- the stroke color (expressed similar to HTML, e.g. 0xffffff for white)lineStyle- the line style- Throws:
java.io.IOException- thrown if the graphics cannot be generated
-
toByteArray
public byte[] toByteArray() throws java.io.IOExceptionDescription copied from interface:ByteArrayResultGets the resulting graphics as a byte array.- Specified by:
toByteArrayin interfaceByteArrayResult- Returns:
- the byte array
- Throws:
java.io.IOException- thrown if the construction of the byte array fails
-
writeTo
public void writeTo(java.io.OutputStream os) throws java.io.IOExceptionWrites the resulting PDF document to the specified output stream.- Parameters:
os- the output stream- Throws:
java.io.IOException- thrown if the image cannot be written
-
saveAs
public void saveAs(java.nio.file.Path path) throws java.io.IOExceptionSaves the resulting PDF document to the specified path.- Parameters:
path- the path to write to- Throws:
java.io.IOException- thrown if the image cannot be written
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Throws:
java.io.IOException
-
-