Ответ 1
Вы можете делать то, что ищете очень просто (это просто не документировано) прямо в PhantomJS.
var page = require('webpage').create(),
fs = require('fs');
page.viewportSize = { width: 600, height: 600 };
page.paperSize = { format: 'Letter', orientation: 'portrait', margin: '1cm' };
page.content = fs.read('/dev/stdin');
window.setTimeout(function() {
page.render('/dev/stdout', { format: 'pdf' });
phantom.exit();
}, 1);
(Возможно, потребуется увеличить таймаут, если у вас есть изображения, требующие загрузки и т.д.)
HTML приходит в stdin, PDF файл выходит из stdout. Вы можете проверить его как:
echo "<b>test</b>" | phantomjs makepdf.js > test.pdf && open test.pdf