当我从Jersey Resource启动service.snapshot(msg);
时,它可以正常工作。但是对于下面的代码,它会生成空白的png / pdf文件。
@GET
@Path("/snapshot")
@Produces(MediaType.APPLICATION_JSON)
public RequestResponse snapshot( @QueryParam("url") String url, // snapshot(...)
@QueryParam("format") String format,
@QueryParam("quality") int quality) throws InterruptedException {
final PageSnapshotMsg msg = new PageSnapshotMsg.Builder().url(url).
format(format).
quality(quality).
build();
return service.snapshot(msg);
}
生成的PhatomJS js脚本是相同的: 我想知道它会是什么?
更新 我试图使我的PhantomJS脚本看起来像这样(添加延迟 2000 ),但它没有帮助:
var page = require('webpage').create();
page.viewportSize = { width: 800, height: 600 };
page.open('bl.ocks.org/mbostock/4063550', function(status) {just_wait(); });
function just_wait() {
setTimeout(function() page.render('c:/snapshots_db/1406931931354_bl_ocks_org_mbostock_4063550.png', {format: 'png', quality: '10'});
phantom.exit();}, 2000);}
答案 0 :(得分:1)
尝试添加延迟,之后将截取屏幕截图。就在page.render()之前,这有助于页面在呈现之前实际加载。帮了我一次。如果那里有任何希望,请发帖。
否则,尝试检查保存图像的目录(对于应用程序)的写权限以及页面URL是否可用..
可能相关.. Phantomjs creating black output from SVG using page.render
还请检查其他相关主题..
答案 1 :(得分:1)
您open
需要成为正确网址的网址。它必须以http://
或https://
开头。否则没有任何反应。
您应该检查status
参数以获取提示。
var page = require('webpage').create();
page.open('http://example.com/', function(status){
console.log(1, status); // success
page.open('example.com/', function(status){
console.log(2, status); // fail
phantom.exit();
});
});