2

我有一个项目要求渲染 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)的建议可能是解决我的问题的无头服务器部分的可行解决方案。

4

1 回答 1

1

您可以使用 xvfb 启动虚拟 X-windows 环境。您现在可以启动常规浏览器来呈现页面并使用屏幕捕获实用程序来捕获窗口的内容。这并不漂亮,但做起来很简单。

WebKit 是开源和可嵌入的,也许你可以在一个小的原生应用程序中使用它来在画布上渲染并将其保存到磁盘?

于 2010-06-11T16:08:00.573 回答