Interface PdfTemplate<T>
- All Known Implementing Classes:
AbstractJacksonPdfTemplate,DefaultPdfTemplate,PdfInvoiceTemplate
This interface is implemented by classes that want to be added to the PDFfer registry as PDF templates.
PDF template classes must also be annotated with the PdfTemplateComponent stereotype, which allows
developers to provide the name of the template and to indicate the
scope that the template should be configured for in the registry context.
Unless specified otherwise, the scope will be "prototype".
The lifecycle of a template is meant to be as follows
- created as a Spring bean in the PDFfer Registry context when needed to generate a PDF document
- the PDF payload is set with the
setPayload(Object)method - the payload is validated with the
validate()method - the
generate()method is called to process the payload and create the actual PDF document - the bytes of the PDF are retrieved with the
getPdfContent()method by the requester
Mostly, you will probably want to use the AbstractJacksonPdfTemplate class for your templates, rather than
implement this interface from scratch.
-
Method Summary
Modifier and TypeMethodDescriptionvoidgenerate()Prepares the PDF document.Returns the payload used by this instance to generate a PDF document.Returns the payload class that this template is able to handle.byte[]Returns the PDF document that was generated bygenerate()as an array of bytesstatic StringgetTemplatePath(String group, String name)Makes a template path string from group and name.static StringgetTemplatePath(PdfTemplate<?> template)Returns the template path string for the given template.voidsetPayload(T payload)Sets the payload that should be used by this instance to generate a PDF document.static String[]splitTemplatePath(String path)Returns the group and name components from a template path string.static StringtemplateToString(PdfTemplate<?> template)Returns a string representation of a PDF template.booleanvalidate()Checks that the payload is consistent with the requirements of the template.
-
Method Details
-
getTemplatePath
Makes a template path string from group and name. It uses thePdfTemplateComponent.GROUP_SEPARATORstring for that.- Parameters:
group- the name of the template groupname- the name of the template- Returns:
- the template path for the given group and name
-
getTemplatePath
Returns the template path string for the given template. It uses thePdfTemplateComponent.GROUP_SEPARATORstring for that.- Parameters:
template- the template of which the path is required- Returns:
- the template path for the given template
-
splitTemplatePath
Returns the group and name components from a template path string.- Parameters:
path- the template path to be de-composed- Returns:
- an array of strings with the group at element 0 and the name at element 1
-
templateToString
Returns a string representation of a PDF template.- Parameters:
template- the template to represent as a string- Returns:
- the string representing the template
-
getPayloadClass
Returns the payload class that this template is able to handle. It takes instances of the class returned by this method and produces PDFs from them.- Returns:
- the payload class
-
getPayload
T getPayload()Returns the payload used by this instance to generate a PDF document. It must be of the type indicated bygetPayloadClass().- Returns:
- the payload
-
setPayload
Sets the payload that should be used by this instance to generate a PDF document. It must be of the type indicated bygetPayloadClass().- Parameters:
payload- the payload
-
validate
boolean validate()Checks that the payload is consistent with the requirements of the template.
The concept of "valid payload" is entirely up to each
PdfTemplateinstance.- Returns:
trueif the payload is valid and can be safely used to generate PDFs,falseotherwise
-
generate
void generate()Prepares the PDF document. It uses the payload set withsetPayload(Object)and assumes that the payload has already been checked withvalidate(). The generated PDF document can be accessed withgetPdfContent()after this method returns. -
getPdfContent
byte[] getPdfContent()Returns the PDF document that was generated bygenerate()as an array of bytes- Returns:
- the bytes of the generated PDF document
-