Norwegian Pony Master

    @enfexia/carbone-render

    0.0.2 • Public • Published

    carbone-render

    npm downloads License img

    Library to generate a document from an existing template and JSON data. This is a wrapper around carbone, please refer to their documentation for more detail.

    Prerequisites

    This library will require LibreOffice installed to do pdf generation.

    Installation

    npm i @bcgov/carbone-render

    Usage

    const carboneRenderer = require('@bcgov/carbone-render');

    startFactory

    Optional call to start up the carbone python converter. This is recommended to call on the start of your application. Otherwise, the first call to render will take longer as it starts the converter in the background.

    carboneRenderer.startFactory();

    fileTypes

    Return a dictionary of allowable file conversions. Convert to pdf is always allowed.

    const allowedConversions = carboneRenderer.fileTypes;

    Returns dictionary

    {
        "csv": [
            "doc",
            "docx",
            "html",
            "odt",
            "pdf",
            "rtf",
            "txt",
            "csv"
        ],
        "docx": [
            "doc",
            "docx",
            "html",
            "odt",
            "pdf",
            "rtf",
            "txt"
        ],
        "html": [
            "html",
            "odt",
            "pdf",
            "rtf",
            "txt"
        ],
        "odt": [
            "doc",
            "docx",
            "html",
            "odt",
            "pdf",
            "rtf",
            "txt"
        ],
        "pptx": [
            "odt",
            "pdf"
        ],
        "rtf": [
            "docx",
            "pdf"
        ],
        "txt": [
            "doc",
            "docx",
            "html",
            "odt",
            "pdf",
            "rtf",
            "txt"
        ],
        "xlsx": [
            "odt",
            "pdf",
            "rtf",
            "txt",
            "csv",
            "xls",
            "xlsx"
        ]
    }

    async render

    Generate a new document from a template and JSON data. Render the report.

    const data = {
        "firstName": "Jane",
        "lastName": "Smith",
        "title": "Who?"
    };
    
    const options = {
        "convertTo": "pdf",
        "reportName": "{d.firstName}-{d.lastName}.docx",
        "overwrite": "true",
        "cacheReport": "true"
    };
    
    const formatters = {
        // this formatter can be used in a template with {d.myBoolean:yesOrNo()}
        yesOrNo : function (data) { // data = d.myBoolean
            if (this.lang === 'fr') {
                return data === true ? 'oui' : 'non';
            }
            return data === true ? 'yes' : 'no';
        }
    };
    
    const output = await carboneRenderer.render(template.path, data, options, formatters);
    Parameters Description
    template template file
    data object or array of objects used in the template
    options Options object to pass to carbone. See carbone documenation.
    options.convertTo What file type to convert to, see fileTypes or pdf
    options.reportName Name of the generated report, should include expected extension. Can contain template placeholders, see carbone documentation.
    formatters Object. Additional formatters to add to carbone. See carbone documenation.

    Returns object

    {
        "success": false,
        "errorType": null,
        "errorMsg": null,
        "reportName": null,
        "report": null
    }
    Field Description
    success boolean, true indicates report generated, false otherwise
    errorType number - error number if not successful.
    errorMsg string - error message if not successful.
    reportName string - name of the generated report
    report binary - generated file

    Install

    npm i @enfexia/carbone-render

    DownloadsWeekly Downloads

    1

    Version

    0.0.2

    License

    Apache-2.0

    Unpacked Size

    20 kB

    Total Files

    5

    Last publish

    Collaborators

    • enfexia