📖
Rulecube documentation
v2.4
v2.4
  • Overview
  • Quick Start
  • Tutorial
    • Getting started
    • Create and Run Your First Ruleset
    • Use Constants and Methods
    • Create and Call Functions
    • Adding Testcases
    • Using Lookup Tables
    • Using Entities
    • Using Forms
  • How-to Guides
    • Logging in and Authorization
      • Activate Your Account From an Invitation
      • Log in to Rulecube
      • Change Your Password
      • Recover Your Password
      • Two-factor authentication (2FA)
      • Invite Other Users to Rulecube
      • Edit a User's Role
      • Delete a User
    • Ruleset Development
      • Create a Ruleset
      • Set the Input for a Ruleset
      • Create a Rule
      • Generate Alerts
      • Try out a Ruleset
      • Call a Ruleset from Your Software
      • Entities
        • Create an Entity
        • Drag and Drop a JSON Schema or XSD to create entities
        • Entity instantiation
        • Persisted Entities
      • Constants
        • Constant Tables
      • Functions
      • Built-in Functions
      • Create and Run a Testcase
      • Delete a Ruleset or Components
      • Debugging your Ruleset
    • Create a Workflow
      • Workflow step types
      • Working with documents in a workflow
    • Work with (Environment) Variables
    • Call a Ruleset via Its API From Postman
    • Creating input from JSON Schema
    • Use a Ruleset from Your Software
    • Ruleset Productivity Tips
    • Create an Ockto workflow
    • Alert aggregation
    • Forms
      • Introduction and overview
      • Create a Data table
  • Language Reference
    • Global
    • Array
    • Compression
    • Crypto
    • Date
    • Encryption (deprecated)
    • Finance
    • Http
    • Mail
    • MongoDB
    • Ockto
    • PDF
    • SQL
    • Statistics
    • System
    • UserStore
    • Workflow
Powered by GitBook
On this page
  1. Language Reference

PDF

Collection of PDF functions.

Methods

create

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 });
PreviousOcktoNextSQL

Last updated 1 month ago