1

RFC 1942 中提到了一个标准的两遍算法:http ://www.ietf.org/rfc/rfc1942.txt但是我还没有看到任何好的实际实现。有人知道吗?我无法在 Mozilla 或 WebKit 代码库中找到任何有用的东西,但我不完全确定该去哪里找。

我想这实际上可能是一个更深层次的问题,必须实际呈现 HTML(表格单元格的内容),但只是为了保持简单 - 将纯文本 HTML 表格作为图像。即使是忽略“作为图像”部分的 HTML 表格渲染算法......

4

6 回答 6

1

如果可以选择商业工具,请查看:

HtmlCapture ActiveX Control V2.0(原名HtmlSnap)

他们声称的一些功能:

  • 通过调用 SnapHtmlString(),您可以为 html 字符串拍摄快照。
  • 获取由 Microsoft IE 或 Mozilla Firefox 呈现的快照图像。
  • 只需调用 SnapUrl() 和 SaveImage(),您就可以将网页快照转换为各种图像,例如 BMP、JPG、JPEG、GIF、PNG、TIF、TGA 和 PCX。
  • 将 html 转换为矢量图像格式,如 EMF 和 WMF。
  • 自包含 ActiveX 控件,没有第三方依赖项。
  • 支持生成图像的自定义 gdi 输出。
  • 支持将生成的图像保存到文件和内存中。
  • 支持保存全尺寸网页和缩略图。
  • 将整个网页的快照拍摄成一张没有滚动条的图像。
  • 使用有效的算法制作灰度或黑白图像以保持质量。
  • 支持JPEG压缩级别,TIFF和GIF压缩方式选择。
  • 支持在图像中设置颜色深度,同时尽可能保持图像质量。
  • 根据需要选择性地在网页上保存 activeX、图像、Java 小程序、脚本和视频。
  • 在快照请求中发送自定义 cookie、http 标头、凭据。
  • 通过代理服务器拍摄网页快照。
  • 提供了 30 多个用 VC、C-、Delphi、VB、C++ Builder、Java、JScript、Perl、VBScript、ASP、ASP.net 和 PHP 编写的示例。
于 2008-10-13T04:24:10.117 回答
0

由于可以指定单元格大小的各种方式、嵌套在表格中的表格等,html 表格呈现并非微不足道。

如果你想要的只是图像,一个简单的解决方案是 .NET 浏览器控件(基本上是 IE 的 COM 组件)和屏幕捕获功能

如果你想获得一些源来操作,Mozilla 源应该仍然可用

于 2008-10-13T03:51:05.613 回答
0

我不确定这是否符合您的限制,但您可以尝试使用 IE 或带有 MSHTML 的 IE 控件和IHTMLElementRender接口将表格呈现到设备上下文。

于 2008-10-13T04:11:51.063 回答
0

如果您有 XHTML,而不是纯 HTML,您应该能够检索这些单元格的内容以及有关表格结构的信息:colspan、rowspan 等。使用这些信息,您可以使用自己的边框、填充和边距值。

当您还想呈现用户定义的维度时,事情会变得复杂。但是为了检索表数据并绘制它,您可以使用 XML 解析器。PHP的解析器在这里:http ://ca3.php.net/xml

于 2008-10-13T05:54:22.307 回答
0

一种接近的工具是:http ://www.terrainformatica.com/htmlayout/main.whtm

这个库提供了一种将渲染的 HTML 捕获到图像的方法,但是它不是开源的(但是免费的!)。希望对一些人有用!

不幸的是,我的应用程序是跨平台的 C/C++,没有 MFC 或平台依赖项(噩梦!)。我希望找到一种用于表格渲染的通用算法。我认为 RFC 中的 2-pass 选项非常接近,所以我可能会深入研究并反对它。如果可以的话,我一定会在博客上发布我的最终解决方案!

于 2008-10-13T07:07:54.390 回答
0

看看Prince XML - 它是一种将 CSS 样式的 XML(包括 XHTML)文档呈现为 PDF 的商业工具。该工具符合主要的 W3C 标准,如 XHTML 和 CSS2.1。您可以从他们的主页尝试免费的演示版!

由于您想要图像:以编程方式将生成的 PDF 转换为图像应该不是什么大问题。

于 2008-10-13T08:31:53.673 回答