How to use Rasterize.js with PhantomJS?



In the previous blogs we have explained you how to take screenshot of a web page with PhantomJS in a PNG format.

In this blog we will teach you how to use Rasterize.js in PahntomJS  to capture  any Webpage/Render HTML in a PDF format.

What is Rasterize.js?

It is a Javascript API runs on PhantomJS Engine which capture any Webpage/Render HTML in PDF format.  

Please follow the below steps to make a PDF Convertor on your machine:-

Step 1

First download and configure PhantomJS in your machine with the help of my previous blog.

Step 2

Now hopefully you have installed and checked  PhantomJS running in your system.

Download Rasterize.js  by clicking this URL  or simply copy paste the updated script from below:


"use strict";
var page = require('webpage').create(),
system = require('system'),
address, output, size, pageWidth, pageHeight;
if (system.args.length < 3 || system.args.length > 5) {
console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"');
console.log(' image (png/jpg output) examples: "1920px" entire page, window width 1920px');
console.log(' "800px*600px" window, clipped to 800x600');
phantom.exit(1);
} else {
address = system.args[1];
output = system.args[2];
page.viewportSize = { width: 1024, height: 2000};
if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
size = system.args[3].split('*');
page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
: { format: system.args[3], orientation: 'portrait', margin: '1cm' };
} else if (system.args.length > 3 && system.args[3].substr(-2) === "px") {
size = system.args[3].split('*');
if (size.length === 2) {
var pageWidth = parseInt(size[0], 10),
pageHeight = parseInt(size[1], 10);
page.viewportSize = { width: pageWidth, height: pageHeight };
page.clipRect = { top: 0, left: 0, width: pageWidth, height: pageHeight };
} else {
console.log("size:", system.args[3]);
var pageWidth = parseInt(system.args[3], 10),
pageHeight = parseInt(pageWidth * 3/4, 10); // it's as good an assumption as any
console.log ("pageHeight:",pageHeight);
page.viewportSize = { width: pageWidth, height: pageHeight };
}
}
if (system.args.length > 4) {
page.zoomFactor = system.args[4];
}
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit(1);
} else {
window.setTimeout(function () {
page.render(output); console.log("Success");
phantom.exit();
}, 200);
}
});
}

In this script I have added console.log("Success") statement which display on command prompt if your webpage successfully renders in PDF format.

Note: Place your Rasterize,js file at the same location where your PhantomJS resides in your system.




Step3

Now it's time to Trigger Rasterize.js on PhantomJS engine which renders your HTML page into PDF format.

Open command prompt and go to the path where PhantomJS  saved and use the following command to create PDF file.





Run this Command: phantomjs  rasterize.js  https://amanvyas.blogspot.in/  keeplearning.pdf

Step 4:

When you hit the enter button on command prompt PhantomJS engine renders your HTML file into PDF format and you can see below.





Step 5

As we have made a console statement in our script file so a Sucees will print on command prompt it means that PhantomJS placed a PDF file at the same location where you have placed Resterize.js.





Hope you found this blog useful!!

Please try this by your own and for any feedback and queries comment below.

Related Posts: 

https://amanvyas.blogspot.in/2017/05/how-to-install-phantomjs-in-windows-as.html

https://amanvyas.blogspot.in/2017/05/how-to-use-phantimjs-as-pdf-convertor.html.

For more updates please Share and Subscribe my blog!!

Comments

Popular Posts

A brief Introduction of CSS Box Model

How to Crack any Government exam in 6 months?

Total Pageviews