Generate a PDF from a template in Flutter
Nutrient Flutter SDK enables you to create a new PDF document from a template. The template can be a page pattern or a page from an existing PDF document.
License
To generate a PDF from a template, contact Sales to add the PDF Generation component to your license.
Predefined page patterns
The table below summarizes the predefined list of page patterns.
Blank | PagePattern.blank |
Dots 5 mm | PagePattern.dots_5mm |
Grid 5 mm | PagePattern.grid_5mm |
Line 5 mm | PagePattern.lines_5mm |
Line 7 mm | PagePattern.lines_7mm |
Creating custom tiled templates
In addition to using the predefined patterns, you can build customized page templates from your own PDF documents. To do this, use the PagePattern.fromDocument
method that takes a file URI as its parameter.
Many use cases for page templates require the background to be tiled/patterned. A page is tiled when there are one or more images repeated on the page.
Creating a tiled page template requires the source document to be exported correctly. This means that the source PDF needs to contain a pattern itself. If a PagePattern
is instantiated using PagePattern.fromDocument
and the source document doesn’t contain a pattern, the rendering will fail silently.
To use a PDF as a source for a tiled page template, ensure it has the pattern path information embedded. To do this, use Adobe Illustrator or any other vector editing tool.
When creating your own patterns, consider the following:
-
The path information is embedded in the PDF rendered on the page, and not the actual PDF.
-
If your custom pattern requires spacing between tiles, include this information in the pattern information.
For testing purposes, use this sample template.
Generating PDFs from page patterns
To generate a PDF from page patterns, create a NewPage
object with the NewPage.fromPattern()
method that takes PagePattern
as its parameter:
/// Custom tiled page PDF document. File patternTilesDocument = File('<readable-tiled-document-path'); String outputPath = '<writable-file-path>'; List<NewPage> pages = [ // PSPDFKit predefined patterns. NewPage.fromPattern(PagePattern.blank), NewPage.fromPattern(PagePattern.grid5mm), NewPage.fromPattern(PagePattern.line5mm), NewPage.fromPattern(PagePattern.dots5mm), // Page from a custom tiled page PDF document. NewPage.fromPattern( PagePattern.fromDocument(patternTilesDocument.uri, 0)), ]; // Generate PDF from page templates and save it at `[outputPath]`. var filePath = await PspdfkitProcessor.instance.generatePdf(pages, outputPath);
Generating PDFs from existing PDF document pages
PdfPage
enables you to generate a PDF from existing PDF document pages. This is useful for generating a PDF by merging pages from different PDF document pages.
PdfPage
is different from the PagePattern.fromDocument
creation method of the PagePattern
class. Unlike PagePattern
, PdfPage
expects a standard PDF document and a page index for the source document.
To generate a PDF from existing PDF document pages, create a NewPage
object with the NewPage.fromPdfPage()
method that takes PdfPage
as its parameter:
// Source document file. File sourceDocument = File('readable-output-path'); String outputPath = '<writable-output-path>'; List<NewPage> pages = [ // New page from an existing document page. NewPage.fromPdfPage( PdfPage( sourceDocumentUri: sourceDocument.uri, pageIndex: 4, ) ) ]; var filePath = await PspdfkitProcessor.instance.generatePdf(pages, outputPath);
For more information on generating PDF files from HTML strings and URLs, see the PspdfkitProcessor
documentation and the PDF Generation Example from the Catalog app.