我有一个项目要求渲染 HTML 并将渲染的图像捕获为无头 CentOS 5.4 服务器上的文件。我的具体要求是:
1) 输入将是要呈现的页面的 URL(或 file:// URL 到本地 HTML 文件),输出将是包含页面呈现图像的图像文件
2) 渲染器必须支持 CSS 直到CSS level-1
3) 页面中的静态图像必须在渲染图像中正确显示,包括 .GIF 或 .PNG 文件中的任何透明颜色
4) 必须能够在无头 CentOS 5.4 服务器上运行。
5) 解决方案不得依赖于任何非免费用于商业用途的产品或组件
除了获取屏幕截图并将其保存到图像之外,我不需要对页面做任何事情。困难的部分似乎是在无头环境中执行此操作。我见过的一些解决方案需要显示才能工作。
有什么建议么?
在此先感谢,吉姆
解决方案:我最终使用 Standard Widget Toolkit 库 (www.eclipse.org/swt) 来实现其嵌入式浏览器功能。这使我能够以编程方式打开一个带有浏览器控件的窗口,呈现页面,然后将窗口的内容捕获到图像文件(通常是 PNG)中。这种方法唯一无法避免的缺点是“闪烁”,当必须使窗口暂时可见才能进行屏幕捕获时。我可以忍受它。剩下的只是初始化获取系统资源的 SWT 对象的代码、一个检查页面加载是否成功完成的侦听器,以及一些用于清理挂起连接的代码(当页面加载由于某种原因从未完成时)。
我有一个队友在 CentOS Linux 上玩 xvfb(X 虚拟帧缓冲区)。最初的测试似乎有效,所以看起来下面海报(谁说尝试 xvfb)的建议可能是解决我的问题的无头服务器部分的可行解决方案。