Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/prexview/prexview-js

Transform your data from XML or JSON to high quality, beautiful and readable documents in PDF, HTML, PNG or JPG
https://github.com/prexview/prexview-js

convert converter document-conversion image json json-parser json-to-html json-to-pdf json-to-png prexview tranform xml xml-parser xml-to-html xml-to-pdf xml-to-png

Last synced: 24 days ago
JSON representation

Transform your data from XML or JSON to high quality, beautiful and readable documents in PDF, HTML, PNG or JPG

Awesome Lists containing this project

README

        

# ![PrexView](https://prexview.com/media/extension/promo.png)

[![Status](https://travis-ci.org/prexview/prexview-js.svg?branch=master)](https://travis-ci.org/prexview/prexview-js) [![npm version](https://badge.fury.io/js/prexview.svg)](https://npmjs.org/package/prexview "View this project on npm")

A JavaScript module to use [PrexView][1], a fast, scalable and friendly service for programatic HTML, PDF, PNG or JPG generation using JSON or XML data.

*See [PrexView][1] 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][1]

#### 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

```js
pxv = new PrexView('YOUR_API_KEY');
```

#### Include the library

```js
const PrexView = require('prexview')
```

#### Sending an XML

To send an XML string use ```pxv.sendXML(xml, options)``` method, this method will return a [Promise][4] with the [Response object][3] on success or an error if something is wrong.

##### Example

```js
const fs = require('fs')
const PrexView = require('prexview')

const pxv = new Prexview();

const options = {
template: 'supported_languages',
output: 'pdf'
}

const xml = `

English
Español
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)
})
```

#### Sending a JSON

To send a JSON string or JavaScript object use ```pxv.sendJSON(json, options)``` method, this method will return a [Promise][4] with the [Response object][3] on success or an error if something is wrong.

##### Example

```js
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)
})
```

##### 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][2].|
|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][2].|
|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:

```json
{
"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][1]

[1]: https://prexview.com
[2]: #dynamic-values
[3]: #response-object
[4]: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise