wkhtmltopdf-nodejs-pdfapi

Api for pdf generation using wkhtmltopdf

Usage no npm install needed!

<script type="module">
  import wkhtmltopdfNodejsPdfapi from 'https://cdn.skypack.dev/wkhtmltopdf-nodejs-pdfapi';
</script>

README

wkhtmltopdf-nodejs-pdfapi

A library that allows to create pdf files from html using wkhtmltopdf tool.

Requirements

To use this library you need:

  • wkhtmltopdf with it's dependencies
  • nodejs
  • wkhtmltopdf-nodejs-options-wrapper npm package

If you are going to use wkhtmltopdf-nodejs-pdfapi on a machine with operating system without graphical shell, then you will need to install display server, for example - xvfb.

For your convenience vagrant box with all necessary software has been created. It can be downloaded from https://github.com/GrizliK1988/wkhtmltopdf-nodejs-vagrant.

API

PdfApi has following methods:

createPdf(request: CreateRequest, outputFilePath: string): Promise

CreateRequest is a class from wkhtmltopdf-nodejs-options-wrapper package that wraps wkhtmltopdf options. Method will start pdf creation command and return a promise.

If pdf is generated successfully, then promise will be resolved with (data, debug) parameters, where data is the last output and debug is a full output from wkhtmltopdf. debug will exist only if debug mode is enabled in request.

If pdf generation failed, then promise will be rejected with (data, debug) parameters, where data is an error description.

deletePdf(filePath: string): Promise

Method will start pdf deletion command and return a promise. If pdf is deleted successfully, then promise will be resolved without arguments, otherwise it will be rejected with error parameter.

Usage

var wkhtmlToPdfOptions = require('wkhtmltopdf-nodejs-options-wrapper'),
    PdfApi = require('wkhtmltopdf-nodejs-pdfapi');

var pdfApi = new PdfApi(),
    request = new wkhtmlToPdfOptions.CreateRequest(),
    page = new wkhtmlToPdfOptions.Page();

//let's generate pdf from google.com
page.setInput('http://google.com');
request.addPage(page);
request.setDebug(true); //we want to see all wkhtmltopdf output

pdfApi.createPdf(request, 'google.pdf')
    .then(function(data, debug) {
        console.log('Pdf is generated!');
    }, function(data, debug) {
        console.log('Houston, we have a problem: ' + data);
    });

//after some time we can delete pdf
pdfApi.deletePdf('google.pdf').then(function() {
    console.log('Pdf is deleted');
}, function(error) {
    console.log('Something went wrong: ' + error);
});

PdfApi is used in wkhtmltopdf-nodejs-ws-server package.

Running tests

To run unit tests you can use npm test command.