在没有 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 转换为图像的主要内容,如果未能解决你的问题,请参考以下文章