phantomjs-render-large-page
Version:
PhantomJS can’t render very tall or wide pages (more than 30k pixels). This library is a workaround to do it anyway.
71 lines (43 loc) • 2.7 kB
Markdown
# phantomjs-render-large-page
PhantomJS can't render very tall or wide pages (more than 30k pixels). This library is a workaround to do it anyway.
## Installation
You need imagemagick installed. In ubuntu, you can install it like this:
sudo apt-get update
sudo apt-get install imagemagick
You may need to change its policy at `/etc/ImageMagick-6/policy.xml`. These are the values that worked for the tests:
<policy domain="resource" name="memory" value="4096MiB"/>
<policy domain="resource" name="map" value="4096MiB"/>
<policy domain="resource" name="width" value="128KP"/>
<policy domain="resource" name="height" value="128KP"/>
<policy domain="resource" name="area" value="1024MB"/>
<policy domain="resource" name="disk" value="8GiB"/>
Windows is not supported.
Then
npm install phantomjs-render-large-page --save
## Usage
Include it like this:
var renderLargePage = require('phantomjs-render-large-page').renderLargePage;
in you PhantomJS script.
`renderLargePage` is a phantomjs script that expects to be included from inside a phantomjs script, not called directly.
For example:
//screenshot.js
var renderLargePage = require('phantomjs-render-large-page').renderLargePage;
var page = require('webpage').create();
page.open('http://example.com', function () {
renderLargePage(page, 'screenshot.png', function (error) {
phantom.exit();
});
});
## Parameters
The `renderLargePage` function accepts the following parameters:
renderLargePage(page, filename, callback, [options]);
`page` is the PhantomJS page object to render.
`filename` is a file path where the output image will be rendered, as you would pass it to PhantomJS' `render` function
`callback` is a function that will be called on complete. callback will be passed an error parameter, that will only be present if there was an error.
`options` is an optional object with the following optional properties:
`options.tmpDir` a path to the directory where renderLargePage will write intermediate files. Defaults to process.env.TMPDIR (usually /tmp)
`options.format` it will be passed as the second parameter to PhantomJS' `render` function. Defaults to 'png'
`options.quality` it will be passed as the third parameter to PhantomJS' `render` function and to ImageMagick's `-quality` option. Defaults to 100.
`options.limit` Side of the square partial images rendered and stitched together later. Potentially useful to limit memory use. Defaults to 30720
For more information on supported image formats, quality, etc, see the PhantomJS docs for the `render` functionality:
http://phantomjs.org/api/webpage/method/render.html