我已经采用了一个网站,我无法解决问题。该网站使用从命令行调用的CasperJS,该命令行登录到站点,然后从下载的HTML生成PDF。我认为CasperJS将使用Capture()将PhantomJS用于PDF生成。
我需要将页码和总页数添加到PDF中。所以第1页,共5页。但我在网上找不到任何关于如何使用CasperJS和PhantomJS的细节。可能吗?
下载过程在服务器上创建以下JS文件,如下所示:
var casper = require('casper').create({
verbose: false,
logLevel: 'debug',
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
pageSettings: {
loadImages: true,
loadPlugins: true
},
});
var url = '{$siteurl}';
casper.start(url, function() {
this.page.paperSize = {
width: '11in',
height: '8.5in',
orientation: 'landscape',
border: '0.1in'
};
this.fill('form#loginform', {
ident: 'username',
password: 'password'
}, true);
});
var url = '{$siteurl}/pdf/{$twigDate}/{$clubId}/{$sessionId}';
casper.then(function() {
casper.start(url, function() {
this.capture('{$genPdf}');
});
});
casper.run();
然后使用以下命令调用上述文件:
$exe = shell_exec('/usr/bin/casperjs --ignore-ssl-errors=true --ssl-protocol=any ' . INC_ROOT . '/pdf/registers/' . $filename . ' 2>&1');
由于
答案 0 :(得分:0)
PhantomJS有一个paperSize
属性,用于定义以PDF格式呈现时网页的大小。
paperSize
属性具有header
和footer
子属性,允许重复页眉和页脚。
PhantomJS提供了关于如何完成此任务的以下example:
var webPage = require('webpage');
var page = webPage.create();
page.paperSize = {
width: '8.5in',
height: '11in',
header: {
height: '1cm',
contents: phantom.callback(function (pageNum, numPages) {
return '<h1>Header <span style="float:right">' + pageNum + ' / ' + numPages + '</span></h1>';
}),
},
footer: {
height: '1cm',
contents: phantom.callback(function (pageNum, numPages) {
return '<h1>Footer <span style="float:right">' + pageNum + ' / ' + numPages + '</span></h1>';
}),
},
};
注意:可以在printheaderfooter.js文件夹的
examples
中找到更详细的示例。
CasperJS允许您使用page
选项访问现有的PhantomJS WebPage实例。
换句话说,在casperjs.start()
之后,casper.page
中可以使用PhantomJS页面模块。
您可以使用paperSize
访问CasperJS中的casper.page.paperSize
属性。
casper.page.paperSize = {
width: '8.5in',
height: '11in',
header: {
height: '1cm',
contents: phantom.callback(function (pageNum, numPages) {
return '<h1>Header <span style="float:right">' + pageNum + ' / ' + numPages + '</span></h1>';
}),
},
footer: {
height: '1cm',
contents: phantom.callback(function (pageNum, numPages) {
return '<h1>Footer <span style="float:right">' + pageNum + ' / ' + numPages + '</span></h1>';
}),
},
};