0.0.4 • Published 5 years ago

front-pdf v0.0.4

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

NullGravity front-pdf package

front-pdf is a self-hosted service that uses front-end layouts for PDF export. You can create pdf oriented layouts using any front-end technology that you like. Just prepare the front-end build and configure the service.

Conventions

Your front-end build should contain wrapper with PAGE_CLASS, each page should have its fixed dimentions. You should tell the service, when your renedering process is finished for all pages by adding the RENDERED_CHART_CLASS in the end. We are working on improvement of this conventions in future. This is a draft version of the package.

Service usage

  • install node and npm
  • execute npm install
  • execute npm run start it will run the service (on 5000 port by default)
  • execute a POST request on http://localhost:{port}/createReport, send your data in body
  • each page will have its unique id, like this http://localhost:{port}?&id=${id}
  • your static assets (frontend build) should contain an ajax request with the id url parameter on /json?id={id}, they will recieve all the required data, that was sent in body request
  • after your front-end rendering is complete, you should add a RENDERED_CHART_CLASS classname, so the service will now, that it can make a pdf from your page

example

const path = require('path');
const startService = require('front-pdf');

// start the service
startService({
  templates: [
    {
      name: 'template1',
      static: path.join(__dirname, '/../static/template1'),
      index: path.join(__dirname, '/../static/template1/index.html')
    },
    {
      name: 'template2',
      static: path.join(__dirname, '/../static/template2'),
      index: path.join(__dirname, '/../static/template2/index.html')
    }
  ],
  payloadMock: mock,
  port: 5000,
  layoutConfig: {
    PAGE_HORIZONTAL_PADDING: 42.7,
    PAGE_VERTICAL_PADDING: 42.7,
    PAGE_INNER_WIDTH: 1180,
    PAGE_INNER_HEIGHT: 1704,
    PAGE_CLASS: 'pdf-page',
    RENDERED_CHART_CLASS: 'analysis-chart-rendered'
  },
  headless: true
});