A JavaScript module to use PrexView, a fast, scalable and friendly service for programatic HTML, PDF, PNG or JPG generation using JSON or XML data.
See PrexView for more information about the service.
npm install --save prexview You can get an API Key from PrexView
If you can setup enviroment variables
export PXV_API_KEY="YOUR_API_KEY" If you can't setup environment variables, create the PrexView object with your API Key as argument
pxv = new PrexView('YOUR_API_KEY');const PrexView = require('prexview')To send an XML string use pxv.sendXML(xml, options) method, this method will return a Promise with the Response object on success or an error if something is wrong.
const fs = require('fs') const PrexView = require('prexview') const pxv = new Prexview(); const options = { template: 'supported_languages', output: 'pdf' } const xml = `<?xml version="1.0" encoding="UTF-8"?> <languages> <lang code="en">English</lang> <lang code="es">Español</lang> <lang code="fr">Française</lang> </languages>`; const file = 'test.pdf' pxv.sendXML(xml, options) .then((res) => { fs.writeFileSync(file, res.file) console.log(`File created: ${file}`) }).catch((err) => { console.log(e.message) })To send a JSON string or JavaScript object use pxv.sendJSON(json, options) method, this method will return a Promise with the Response object on success or an error if something is wrong.
const fs = require('fs') const PrexView = require('prexview') const pxv = new Prexview(); const options = { template: 'supported_languages', output: 'pdf' } // this can also be a valid string. const json = { languages: [{ code: 'en', name: 'Inglés' }, { code: 'es', name: 'Spanish' }, { code: 'fr', name: 'Française' }] } const file = 'test.pdf' pxv.sendJSON(json, options) .then((res) => { fs.writeFileSync(file, res.file) console.log(`File created: ${file}`) }).catch((err) => { console.log(e.message) })| Property | Type | Description |
|---|---|---|
| id | string | Transaction ID. |
| file | binary | Document created by the service. |
| responseTime | int | Response time from service. |
| rateLimit | int | Maximum number of calls to the service. |
| rateLimitReset | int | Seconds to reset the rate limit. |
| rateRemaining | int | Number of remaining call to the service. |
| Name | Type | Required | Description |
|---|---|---|---|
| template | string | Yes | Template's name to be used to document creation, you can use dynamic values. |
| output | string | Yes | Type of document that will be created by PrexView service, it must be html, pdf, png or jpg. |
| note | string | No | Custom information to be added to the document's metadata, it's limit up to 500 characters and you can use dynamic values. |
| format | string | No | Type of data used to the document creation, it must be xml or json, this should be inferred from library methods. |
| templateBackup | string | No | Template's name to use to be used if the option template is not available in the service. |
In template or note options you can use JSON sintax to access data and have dynamic values, for instance having the following JSON data:
{ "Data": { "customer": "123" } }Your template or note can use any data attribute or text node, for instance:
'invoice-customer-{{Data.customer}}' Then we will translate that to the following:
'invoice-customer-123' And finally the service will try to find the template or note invoice-customer-123 in order to transform the data and generate the document.
MIT © PrexView
