我正在使用nodejs服务器,该服务器将发布的html呈现为pdf,png或jpg。 (https://github.com/svenhornberg/pagetox(server.js),如果你想尝试的话)
它工作得非常好,渲染复杂的网站,但只是我想要加载一个简单的图像。例如,我将以下代码发送到我的服务器:
<!doctype html>
<html>
<head>
<title>logo</title>
</head>
<body>
<img alt="logo" src="http://upload.wikimedia.org/wikipedia/commons/d/de/Wikipedia_Logo_1.0.png">
</body>
</html>
守则应该没问题。 但渲染的响应图片不包含徽标图片。 正如phantomjs文档(http://phantomjs.org/api/webpage/property/settings.html)中所述,localToRemoteUrlAccessEnabled设置为false,因此将其设置为true,如幻像节点(https://github.com/sgentle/phantomjs-node/)文档中所述:
page.set('settings.localToRemoteUrlAccessEnabled', true);
page.set('settings.loadImages', true);
为了证明它设置为true,我调用了一个返回true的getter
page.get('settings.localToRemoteUrlAccessEnabled', function(data) { console.log(data);});
我使用节点v0.10.26与phantomjs-node(0.6.1),linux上的phantomjs(1.9.7)
现在问题是,是否有人看到错误?或者可以给我一个提示我做错了什么。或任何其他可能性为什么phantomjs / phtanom-node没有加载任何外部图像
我正在使用render方法生成png,jpg或pdf文件。我将evaluate函数中的方法作为回调调用,因此应该完全加载该站点。 (完整代码位于https://github.com/svenhornberg/pagetox/blob/master/server.js)
Edit1:我不在代理之后,可能会阻止请求。
答案 0 :(得分:0)
您想要设置的是
page.set('settings.webSecurityEnabled', false);
启用跨域请求。另一个选项localToRemoteUrlAccessEnabled
不会影响您的情况,因为您不使用file:
资源,而是覆盖:空白。
其他问题可能与SSL / TLS有关。请参阅我的回答here以获取更多帮助。
答案 1 :(得分:0)
看起来我需要设置超时并等待所有外部资源都被加载。
page.set('content') dosen't work with dynamic content in phantomjs
我让它工作,但暂停不是我想要的。如果我发现任何更好的方式我会发布它。