当网站变得更“花哨”时,我们停止使用幻像rasterize.js http://website.com filename.pdf停止工作(空白PDF).如果我将它更改为filename.png它可以工作.
我尝试在rasterize中将此超时更改为9999,我仍然得到一个空白的PDF.默认的rasterize.js在网站切换之前正在运行.
有什么想法改变/添加到栅格化以使其再次工作?
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit();
} else {
window.setTimeout(function () {
page.render(output);
phantom.exit();
}, 9999);
});
最佳答案 大约一年前我遇到了一些问题.对我来说(如果我没记错的话),它与@media标签有关. (再次,如果我没记错的话)Pdf是用media print css生成的,而png则不是.尝试删除所有@media print css时会发生什么.
编辑23/9/2014
我不知道这对你有多大的问题(因为你想付出多少努力),但如果是我,我会先尝试这样的事情:
var page = require('webpage').create();
var args = require('system').args;
var output_file = args[1], url =args[2];
page.viewportSize = { width: 1440, height: 900 };
page.paperSize = {
format: "A4",
orientation: "landscape",
margin: { left: "1cm", right: "1cm", top: "1cm", bottom: "1cm" }
};
console.log(url);
page.onLoadFinished = function (status) {
window.setTimeout(function () {
try {
page.evaluate(function () {
jQuery("link").each(function (i, v) {
jQuery(v).attr("media", "all");
});
});
page.render(output_file);
}
catch (e) {
status = e.message;
}
console.log(status + ';;' + output_file);
phantom.exit();
}, 1000);
}
try {
page.open(url);
console.log('loading');
}
catch (ex) {
console.log(ex.message);
phantom.exit();
}
在评估函数中你想要做的任何事情取决于html的内容是什么.
通过使用console.log(page.content)来记录加载的内容的源代码,这是一种更具说服力的方法来告诉出现什么问题.然后用它来看看什么是错的. (只需将该源复制到’test.html’文件中并在浏览器中查看,请记住(offcourse)链接将被破坏)