当我不是从 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);}
最佳答案
尝试添加一段延迟,然后再进行屏幕截图。就在 page.render() 之前,这有助于页面在渲染之前实际加载。帮过我一次。如果有任何希望,请发帖。
否则,尝试检查保存图像的目录(对于应用程序)的写入权限以及页面 URL 是否可用。
可能相关.. Phantomjs creating black output from SVG using page.render
另请检查其他相关主题..
关于java - 从 Jersey Rest 服务启动时,PhantomJS 返回黑色屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25089035/