create(htmlBody: string | string[], options?: {
/**
* Paper size
*/
format?: 'A4' | 'Letter' | 'Legal' | 'Ledger' | 'Tabloid' | 'A0' | 'A1' | 'A2' | 'A3' | 'A5' | 'A6',
/**
* Paper orientation. Defaults to false (portrait).
*/
landscape?: boolean,
/**
* Paper margins. Defaults to { top: 30, right: 35, bottom: 70, left: 25 }. Units can be numbers or strings with units (e.g. '1cm', '10px', '2in', '5mm').
*/
margin?: { top?: number | string, right?: number | string, bottom?: number | string, left?: number | string },
/**
* Paper width, accepts values labeled with units.
*/
width?: string | number,
/**
* Paper height, accepts values labeled with units.
*/
height?: string | number,
/**
* HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them:
* - date: formatted print date
* - title: document title
* - url: document location
* - pageNumber: current page number
* - totalPages: total pages in the document
*/
headerTemplate?: string,
/**
* HTML template for the print footer. Should use the same format as the headerTemplate.
*/
footerTemplate?: string,
/**
* Whether or not to embed the document outline into the PDF. Defaults to false.
*/
outline?: boolean,
/**
* Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
*/
pageRanges?: string,
/**
* Print background graphics. Defaults to false.
*/
printBackground?: boolean,
/**
* Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2.
*/
scale?: number,
/**
* Whether or not to generate tagged (accessible) PDF. Defaults to false.
*/
tagged?: boolean,
/**
* Navigator language.
*/
locale?: string,
/**
* Selector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached').
*/
waitForSelector?: string
/**
* State of defined waitForSelector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached').
*/
waitForState?: 'attached' | 'detached' | 'hidden' | 'visible',
/**
* Add debugging information to the PDF. Defaults to false.
*/
debug?: boolean,
/**
* Custom CSS to be injected into the page before printing.
*/
css?: string,
/**
* HTTP headers to be sent with the request.
*/
httpHeaders?: Record<string, string>,
/**
* LocalStorage content to be injected into the page before printing.
*/
localStorage?: Record<string, string>,
/**
* SessionStorage content to be injected into the page before printing.
*/
sessionStorage?: Record<string, string>,
/**
* Cookies to be set in the page before printing.
*/
cookies?: Record<string, string>
})
Creates a PDF document from given HTML. Returns a base64 encoded string.
Parameters
htmlBody string | string[]
The HTML to convert to PDF. Can be a single string or an array of strings for multiple pages.
options { /* * Paper size / format?: 'A4' | 'Letter' | 'Legal' | 'Ledger' | 'Tabloid' | 'A0' | 'A1' | 'A2' | 'A3' | 'A5' | 'A6', /* * Paper orientation. Defaults to false (portrait). / landscape?: boolean, /* * Paper margins. Defaults to { top: 30, right: 35, bottom: 70, left: 25 }. Units can be numbers or strings with units (e.g. '1cm', '10px', '2in', '5mm'). / margin?: { top?: number | string, right?: number | string, bottom?: number | string, left?: number | string }, /* * Paper width, accepts values labeled with units. / width?: string | number, /* * Paper height, accepts values labeled with units. / height?: string | number, /* * HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: * - date: formatted print date * - title: document title * - url: document location * - pageNumber: current page number * - totalPages: total pages in the document / headerTemplate?: string, /* * HTML template for the print footer. Should use the same format as the headerTemplate. / footerTemplate?: string, /* * Whether or not to embed the document outline into the PDF. Defaults to false. / outline?: boolean, /* * Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages. / pageRanges?: string, /* * Print background graphics. Defaults to false. / printBackground?: boolean, /* * Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2. / scale?: number, /* * Whether or not to generate tagged (accessible) PDF. Defaults to false. / tagged?: boolean, /* * Navigator language. / locale?: string, /* * Selector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached'). / waitForSelector?: string /* * State of defined waitForSelector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached'). / waitForState?: 'attached' | 'detached' | 'hidden' | 'visible', /* * Add debugging information to the PDF. Defaults to false. / debug?: boolean, /* * Custom CSS to be injected into the page before printing. / css?: string, /* * HTTP headers to be sent with the request. / httpHeaders?: Record<string, string>, /* * LocalStorage content to be injected into the page before printing. / localStorage?: Record<string, string>, /* * SessionStorage content to be injected into the page before printing. / sessionStorage?: Record<string, string>, /* * Cookies to be set in the page before printing. / cookies?: Record<string, string> }
(optional) The additional PDF options.
Return type
string
Examples
// The HTML body is the only required parameter
PDF.create('Hello World!');
// You can also add multiple pages, header and footer templates and custom formatting and styling
PDF.create(
[
// Use multiple strings for multiple pages
'<h1>Hello World!</h1>',
'<p>Hello World Too!</p>',
'<span>A third page</span>',
],
// Set additional PDF options
{
headerTemplate: '<div style="width: 100%; text-align: center">This is the header</div>',
footerTemplate: `<div style="width: 100%; margin-right: 25px; text-align: right">
<!-- Use pageNumber and totalPages classes to display page numbers -->
Page: <span class="pageNumber"></span>/<span class="totalPages"></span>
</div>`,
margin: { bottom: 70, left: 25, right: 35, top: 30 }
}
);
createFromUrl
createFromUrl(url: string | string[], options?: {
/**
* Paper size
*/
format?: 'A4' | 'Letter' | 'Legal' | 'Ledger' | 'Tabloid' | 'A0' | 'A1' | 'A2' | 'A3' | 'A5' | 'A6',
/**
* Paper orientation. Defaults to false (portrait).
*/
landscape?: boolean,
/**
* Paper margins. Defaults to { top: 30, right: 35, bottom: 70, left: 25 }. Units can be numbers or strings with units (e.g. '1cm', '10px', '2in', '5mm').
*/
margin?: { top?: number | string, right?: number | string, bottom?: number | string, left?: number | string },
/**
* Paper width, accepts values labeled with units.
*/
width?: string | number,
/**
* Paper height, accepts values labeled with units.
*/
height?: string | number,
/**
* HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them:
* - date: formatted print date
* - title: document title
* - url: document location
* - pageNumber: current page number
* - totalPages: total pages in the document
*/
headerTemplate?: string,
/**
* HTML template for the print footer. Should use the same format as the headerTemplate.
*/
footerTemplate?: string,
/**
* Whether or not to embed the document outline into the PDF. Defaults to false.
*/
outline?: boolean,
/**
* Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
*/
pageRanges?: string,
/**
* Print background graphics. Defaults to false.
*/
printBackground?: boolean,
/**
* Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2.
*/
scale?: number,
/**
* Whether or not to generate tagged (accessible) PDF. Defaults to false.
*/
tagged?: boolean,
/**
* Navigator language.
*/
locale?: string,
/**
* Selector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached').
*/
waitForSelector?: string
/**
* State of defined waitForSelector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached').
*/
waitForState?: 'attached' | 'detached' | 'hidden' | 'visible',
/**
* Add debugging information to the PDF. Defaults to false.
*/
debug?: boolean,
/**
* Custom CSS to be injected into the page before printing.
*/
css?: string,
/**
* HTTP headers to be sent with the request.
*/
httpHeaders?: Record<string, string>,
/**
* LocalStorage content to be injected into the page before printing.
*/
localStorage?: Record<string, string>,
/**
* SessionStorage content to be injected into the page before printing.
*/
sessionStorage?: Record<string, string>,
/**
* Cookies to be set in the page before printing.
*/
cookies?: Record<string, string>
})
Creates a PDF document from a given url. Returns a base64 encoded string.
Parameters
url string | string[]
The url to convert to PDF.
options { /* * Paper size / format?: 'A4' | 'Letter' | 'Legal' | 'Ledger' | 'Tabloid' | 'A0' | 'A1' | 'A2' | 'A3' | 'A5' | 'A6', /* * Paper orientation. Defaults to false (portrait). / landscape?: boolean, /* * Paper margins. Defaults to { top: 30, right: 35, bottom: 70, left: 25 }. Units can be numbers or strings with units (e.g. '1cm', '10px', '2in', '5mm'). / margin?: { top?: number | string, right?: number | string, bottom?: number | string, left?: number | string }, /* * Paper width, accepts values labeled with units. / width?: string | number, /* * Paper height, accepts values labeled with units. / height?: string | number, /* * HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: * - date: formatted print date * - title: document title * - url: document location * - pageNumber: current page number * - totalPages: total pages in the document / headerTemplate?: string, /* * HTML template for the print footer. Should use the same format as the headerTemplate. / footerTemplate?: string, /* * Whether or not to embed the document outline into the PDF. Defaults to false. / outline?: boolean, /* * Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages. / pageRanges?: string, /* * Print background graphics. Defaults to false. / printBackground?: boolean, /* * Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2. / scale?: number, /* * Whether or not to generate tagged (accessible) PDF. Defaults to false. / tagged?: boolean, /* * Navigator language. / locale?: string, /* * Selector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached'). / waitForSelector?: string /* * State of defined waitForSelector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached'). / waitForState?: 'attached' | 'detached' | 'hidden' | 'visible', /* * Add debugging information to the PDF. Defaults to false. / debug?: boolean, /* * Custom CSS to be injected into the page before printing. / css?: string, /* * HTTP headers to be sent with the request. / httpHeaders?: Record<string, string>, /* * LocalStorage content to be injected into the page before printing. / localStorage?: Record<string, string>, /* * SessionStorage content to be injected into the page before printing. / sessionStorage?: Record<string, string>, /* * Cookies to be set in the page before printing. / cookies?: Record<string, string> }
(optional) The additional PDF options.
Return type
string
Examples
// The url is the only required parameter
PDF.createFromUrl('https://www.example.com');
// You can also add header and footer templates and custom formatting and styling
PDF.createFromUrl(
'https://www.example.com',
// Set additional PDF options
{
headerTemplate: '<div style="width: 100%; text-align: center">This is the header</div>',
footerTemplate: `<div style="width: 100%; margin-right: 25px; text-align: right">
<!-- Use pageNumber and totalPages classes to display page numbers -->
Page: <span class="pageNumber"></span>/<span class="totalPages"></span>
</div>`,
margin: {bottom: 70, left: 25, right: 35, top: 30}
}
);
renderForm
renderForm(formName: string, context: { [key: string]: any; }, options?: {
/**
* Paper size
*/
format?: 'A4' | 'Letter' | 'Legal' | 'Ledger' | 'Tabloid' | 'A0' | 'A1' | 'A2' | 'A3' | 'A5' | 'A6',
/**
* Paper orientation. Defaults to false (portrait).
*/
landscape?: boolean,
/**
* Paper margins. Defaults to { top: 30, right: 35, bottom: 70, left: 25 }. Units can be numbers or strings with units (e.g. '1cm', '10px', '2in', '5mm').
*/
margin?: { top?: number | string, right?: number | string, bottom?: number | string, left?: number | string },
/**
* Paper width, accepts values labeled with units.
*/
width?: string | number,
/**
* Paper height, accepts values labeled with units.
*/
height?: string | number,
/**
* HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them:
* - date: formatted print date
* - title: document title
* - url: document location
* - pageNumber: current page number
* - totalPages: total pages in the document
*/
headerTemplate?: string,
/**
* HTML template for the print footer. Should use the same format as the headerTemplate.
*/
footerTemplate?: string,
/**
* Whether or not to embed the document outline into the PDF. Defaults to false.
*/
outline?: boolean,
/**
* Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
*/
pageRanges?: string,
/**
* Print background graphics. Defaults to false.
*/
printBackground?: boolean,
/**
* Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2.
*/
scale?: number,
/**
* Whether or not to generate tagged (accessible) PDF. Defaults to false.
*/
tagged?: boolean,
/**
* Navigator language.
*/
locale?: string,
/**
* Selector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached').
*/
waitForSelector?: string
/**
* State of defined waitForSelector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached').
*/
waitForState?: 'attached' | 'detached' | 'hidden' | 'visible',
/**
* Add debugging information to the PDF. Defaults to false.
*/
debug?: boolean,
/**
* Custom CSS to be injected into the page before printing.
*/
css?: string,
/**
* HTTP headers to be sent with the request.
*/
httpHeaders?: Record<string, string>,
/**
* LocalStorage content to be injected into the page before printing.
*/
localStorage?: Record<string, string>,
/**
* SessionStorage content to be injected into the page before printing.
*/
sessionStorage?: Record<string, string>,
/**
* Cookies to be set in the page before printing.
*/
cookies?: Record<string, string>
})
Render a Ruleset Form to PDF.
Parameters
formName string
The name or ID of the Form (e.g. "Form1").
context { [key: string]: any; }
The context to render the form with.
options { /* * Paper size / format?: 'A4' | 'Letter' | 'Legal' | 'Ledger' | 'Tabloid' | 'A0' | 'A1' | 'A2' | 'A3' | 'A5' | 'A6', /* * Paper orientation. Defaults to false (portrait). / landscape?: boolean, /* * Paper margins. Defaults to { top: 30, right: 35, bottom: 70, left: 25 }. Units can be numbers or strings with units (e.g. '1cm', '10px', '2in', '5mm'). / margin?: { top?: number | string, right?: number | string, bottom?: number | string, left?: number | string }, /* * Paper width, accepts values labeled with units. / width?: string | number, /* * Paper height, accepts values labeled with units. / height?: string | number, /* * HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: * - date: formatted print date * - title: document title * - url: document location * - pageNumber: current page number * - totalPages: total pages in the document / headerTemplate?: string, /* * HTML template for the print footer. Should use the same format as the headerTemplate. / footerTemplate?: string, /* * Whether or not to embed the document outline into the PDF. Defaults to false. / outline?: boolean, /* * Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages. / pageRanges?: string, /* * Print background graphics. Defaults to false. / printBackground?: boolean, /* * Scale of the webpage rendering. Defaults to 1. Scale amount must be between 0.1 and 2. / scale?: number, /* * Whether or not to generate tagged (accessible) PDF. Defaults to false. / tagged?: boolean, /* * Navigator language. / locale?: string, /* * Selector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached'). / waitForSelector?: string /* * State of defined waitForSelector to wait for during URL fetch. The PDF generation will wait until the selector has the given state (default 'attached'). / waitForState?: 'attached' | 'detached' | 'hidden' | 'visible', /* * Add debugging information to the PDF. Defaults to false. / debug?: boolean, /* * Custom CSS to be injected into the page before printing. / css?: string, /* * HTTP headers to be sent with the request. / httpHeaders?: Record<string, string>, /* * LocalStorage content to be injected into the page before printing. / localStorage?: Record<string, string>, /* * SessionStorage content to be injected into the page before printing. / sessionStorage?: Record<string, string>, /* * Cookies to be set in the page before printing. / cookies?: Record<string, string> }
(optional) The additional PDF options.
Return type
string
Examples
// Simplest example, render the form with the name 'Form1'
PDF.renderForm('Form1');
// Context can be passed to the form model with the second parameter as variables.
// This will set the variable 'selectedClient' to 'J007' in the form model.
PDF.renderForm('Form1', { selectedClient: 'J007' });
// You can also set a nested property by using dot notation:
// This will set the variable 'client.name' to 'John'. It will create an object 'client' with a property 'name' and 'age' in the form model.
PDF.renderForm('Form1', { 'client.name': 'John', 'client.age': 30 });
// You can also set additional PDF options, like with the create function.
PDF.renderForm('Form1', { selectedClient: 'J007' }, { landscape: true });