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.
Installation
npm install --save prexview
Getting started
Get your API Key
You can get an API Key from PrexView
Set up your API Key
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');
Include the library
const PrexView = require('prexview')
Sending an XML
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.
Example
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)
})
Sending a JSON
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.
Example
const fs = require('fs')
const PrexView = require('prexview')
const pxv = new Prexview();
const options = {
template: 'supported_languages',
output: 'pdf'
}
const json = {
languages: [{
code: 'en',
name: 'Inglés'
}, {
code: 'es',
name: 'Spanish'
}, {
code: 'fr',
name: 'Française'
}]
}
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)
})
Response object
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. |
Options
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. |
Dynamic values
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.
License
MIT © PrexView