在没有 shell 的 PHP 中将 HTML 转换为图像

Posted

技术标签:

【中文标题】在没有 shell 的 PHP 中将 HTML 转换为图像【英文标题】:Convert HTML to Image in PHP without shell 【发布时间】:2012-10-13 22:15:06 【问题描述】:

我想要将 html 转换为图像并将结果显示给用户的选项。我将使用 php 创建一个 $html 变量,而不是使用 echo $html 显示,我想将其显示为图像,以便用户可以在需要时保存文件。

我希望有像 $image = convertHTML2Image($html); 这样简单的东西。 :p 如果存在?!

谢谢!!

【问题讨论】:

【参考方案1】:

正如@Pekka 所说,将 HTML 代码转换为图像的工作是成熟的网络浏览器的工作。

如果你想做这种事情,那么你需要一个脚本来执行以下操作:

    在浏览器中打开页面。 从浏览器捕获呈现的页面作为图形。 将该图形输出给您的用户。

传统上,这将是一项艰巨的任务,因为网络浏览器通常由用户驱动,并且不容易以这种方式自动化。

幸运的是,现在有一个解决方案,形式为PhantomJS。

PhantomJS 是一款无头浏览器,专为这类事情而设计——需要成熟渲染引擎的自动化任务。

它基本上是一个完整的浏览器,但没有用户界面。它以与其他浏览器完全相同的方式呈现页面内容(它基于 Webkit,因此结果类似于 Chrome),并且可以通过脚本进行控制。

正如 PhantomJS 主页上所说,它的目标用例之一是截取网站的屏幕截图或缩略图。

(它的另一个好处是对您的网站进行自动化测试,它也是一个很棒的工具)

希望对您有所帮助。

【讨论】:

【参考方案2】:

这在纯 PHP 中是不可能的。

您所谓的“转换”实际上是一项艰巨的任务:必须渲染 HTML 页面。要在 PHP 中执行此操作,您必须重写整个 Web 浏览器。

您要么必须使用外部工具(通常利用浏览器的渲染引擎),要么必须使用 Web 服务(其作用相同)。

【讨论】:

好吧,我不固定使用 PHP。该页面会将内容显示为 HTML。我只是想给用户这个选项,如果他们想下载页面(这个 HTML 是一个日历),他们可以点击一个按钮,页面被保存为图像,然后用户可以保存它。 @user 查看How to save webpage as a image file using PHP?中的链接 @user1083320:为什么图像需要看起来像 HTML 页面? 图像有多重要?您可以制作一个不错的 print.css 样式表并鼓励用户打印为 PDF。【参考方案3】:

你可以看看dompdf,这是一个将html文件转换为pdf的php框架。

【讨论】:

【参考方案4】:

使用 WKHTMLTOPDF。奇迹般有效。它可以将任何页面转换为 PDF .. 后面的操作可以得到一个jpeg。

http://code.google.com/p/wkhtmltopdf/

【讨论】:

其实wkhtml2pdf需要shell访问【参考方案5】:

可以将 html 转换为图像。但是,首先您必须转换为 PDF。见link

【讨论】:

以上是关于在没有 shell 的 PHP 中将 HTML 转换为图像的主要内容,如果未能解决你的问题,请参考以下文章

php利用root权限执行shell脚本 (转)

php调用shell的方法技巧

(转)shell实现多级菜单脚本编写

Python 在 PHP 中将多个 JSON 作为字符串返回

Shell脚本怎样转相对路径为绝对路径

求助:word中将下划线的字符转成驼峰格式