How to create PDF files from HTML/URL in Total.js?

Tue Feb 14 2017 15:06:03 GMT+0100 (Central European Standard Time), Peter Širka

How to create PDF files from HTML/URL in Total.js?

Create an operation

E.g. /definitions/operations.js:

const Exec = require('child_process').exec;
const Fs = require('fs');

NEWOPERATION('pdf', function(error, value, callback) {

    // value.url           - {String}, absolute URL
    // value.filename      - {String}, absolute path
    // value.width         - {Number}, browser width - default: 1280
    // value.height        - {Number}, browser height - default: 1024
    // value.format        - {String}, default: "A4"
    // value.orientation   - {String}, default: "portrait"
    // value.timeout       - {Number}, default: 200

    Exec('phantomjs {0} "{1}" "{2}" {3} {4} {5} {6}'.format(F.path.temp('pdf.js'), value.url, value.filename, value.format || 'A4', (value.width || '1280') + 'x' + (value.height || '1024'), value.orientation || 'portrait', value.timeout || 200), function(err, response) {
        err && error.push(err);
        callback(value.filename);
    });
});

// Creates a "phantom" script into the temporary directory
Fs.writeFileSync(F.path.temp("pdf.js"), "var P=require('webpage').create();var S=require('system');console.log(S.args);var size=(S.args[4]||'').split('x');P.viewportSize={width:parseInt(size[0]||'1280'),height:parseInt(size[1]||'1024')};P.paperSize={format:S.args[3]||'A4',orientation:S.args[5]||'portrait'};P.clipRect={top:0,left:0,width:P.viewportSize.width,height:P.viewportSize.height};P.open(S.args[1],function(status){if(status!=='success'){phantom.exit(1);return}window.setTimeout(function(){P.render(S.args[2]);phantom.exit()},parseInt(S.args[6] || '200'))});");

Usage

You can execute the code below everywhere in your Total.js application:

// Creating PDF
OPERATION('pdf', { url: 'https://www.totaljs.com/', filename: F.path.public('totaljs.pdf') }, function(err, filename) {
    console.log(err, filename);
});

Tags

Follow us

Latest blogs
Flow v6 is here!
Thu Mar 07 2019 11:53:54 GMT+0100 (Central European Standard Time)
A critical security fix
Wed Feb 13 2019 22:15:39 GMT+0100 (Central European Standard Time)
New release: Total.js v3.2
Wed Feb 13 2019 22:14:39 GMT+0100 (Central European Standard Time)
Total.js Wiki v2
Fri Jan 04 2019 22:15:01 GMT+0100 (Central European Standard Time)
Total Year 2018
Thu Jan 03 2019 21:14:00 GMT+0100 (Central European Standard Time)

Latest comments
Nice tip
Mauro Junior
Thu Sep 20 2018 21:41:02 GMT+0200 (Central European Summer Time)
Not only for Total.js. You can communicate with different websocket servers.
Peter Širka
Mon Apr 23 2018 20:08:20 GMT+0200 (Central European Summer Time)
Marko: you need to create a buffer with this codepage and write byte-to-byte string. I recommend ...
Peter Širka
Mon Apr 23 2018 20:06:21 GMT+0200 (Central European Summer Time)
Is WEBSOCKETCLIENT only for internal ws connections between totaljs apps?
Stelios Stephanua
Fri Mar 16 2018 06:04:22 GMT+0100 (Central European Standard Time)
Total.js is amazing! ;)
Leonardo Hessel
Tue Dec 19 2017 19:51:15 GMT+0100 (Central European Standard Time)

Pixabay


Read more

Flow v6 is here!

News: We have released a new version of Flow. This version brings great new features and UI improvements.

Thu Mar 07 2019 11:53:54 GMT+0100 (Central European Standard Time)
A critical security fix

News: We were notified about the critical security bug in Total.js framework. Read a prevention.

Wed Feb 13 2019 22:15:39 GMT+0100 (Central European Standard Time)
New release: Total.js v3.2

News: This new release brings a critical security fix and small new improvements. Update Total.js now.

Wed Feb 13 2019 22:14:39 GMT+0100 (Central European Standard Time)
Total.js Wiki v2

Products: I have released a new version of Total.js Wiki. New version brings new improvements.

Fri Jan 04 2019 22:15:01 GMT+0100 (Central European Standard Time)
Total Year 2018

Business: Last year was perfect for Total.js platform. Total.js platform grows up and it has great results.

Thu Jan 03 2019 21:14:00 GMT+0100 (Central European Standard Time)
Total.js Code Editor v1

Products: Try our real-time collaboration tool for Total Developers. Code Editor offers great features for development.

Fri Dec 07 2018 22:55:13 GMT+0100 (Central European Standard Time)