【问题标题】:Saving a DIV as an Image将 DIV 保存为图像
【发布时间】:2012-09-25 10:15:09
【问题描述】:

我有:

echo"
<div id=IwantToSaveThisWholeDivAsAnImage)>
  <div id=OneOfMultipleDivs>
    <table>multiple tables rendered here
    </table>
  </div>
</div>";

我已经尝试过(其中之一):

$html_code = " 
<html> 
  <head> 
   <title>Image</title> 
   <style> 
     body { 
     font-family:verdana; 
     font-size:11px; 
     color:black 
   } 
   </style> 
  </head> 
  <body> 
   my tables here
  </body> 
</html>";
$img = imagecreate("300", "600"); 
$c = imagecolorallocate($img, 0, 0, 0);
$c2 = imagecolorallocate($img, 255, 255, 255);
imageline($img,0,0,300,600,$c);
imageline($img,300,0,0,600,$c2);

$white = imagecolorallocate($img, 255, 255, 255); 
imagettftext($img, 9, 0, 1, 1, $white, "arial.tff", '$html_code'); 
header("Content-type: image/jpeg");
imagejpeg($img);

我不允许使用外部库。读到它可以用 GD 完成,但到目前为止我一直没有成功。 任何想法和帮助将不胜感激! UB

【问题讨论】:

  • 我有点困惑。您是否尝试呈现实际的 html 文档并将其保存到 img?
  • 是的。我有动态构建的 html,我正在尝试将其保存到图像中(与其他元素结合并最终创建一个 pdf)
  • 为什么不允许你使用任何库?
  • 所以这不是 php 的问题。 php 仅提供 html 源代码(服务器端)。渲染是浏览器问题(客户端)。见stackoverflow.com/questions/1952570/…
  • 没有外部工具是不可能的。单独使用 PHP 甚至是不可能的。我使用 wkhtmltopdf 进行了成功的实验,可以对网站进行“截图”,然后您可以裁剪所需的部分。

标签: php html gd


【解决方案1】:

比我的评论更进一步解释一下:HTML 的呈现是由您的浏览器完成的。 PHP 是服务器端的,所以它不知道如何呈现 HTML,也永远不会。这意味着您将需要可以渲染 HTML 并将渲染结果保存到图像的“东西”,而 PHP 可以与之“对话”。为此,wkhtmltoimage 有效(给它一个 URL,你最终会得到一个 JPG,然后你可以裁剪它)。我也听说过关于 phantomjs 的好消息,它可能更适合您的目标,因为您可以“选择”某个 div。

如果您完全拒绝使用任何外部工具,那么您基本上没有选择。

【讨论】:

    【解决方案2】:

    你可以使用wkhtmltoimage之类的工具进行渲染

    由于它不是用php编写的,这意味着你可以将它安装在你的服务器上并从php运行它。

    【讨论】:

      【解决方案3】:

      当然,您可以在 GD 中构建表格并编写文本,但不能使用 HTML - 您必须自己构建这些(有效地逐行绘制表格然后填充它们)

      正如其他一些用户已经解释的那样,HTML 是在客户端而不是服务器端呈现的,您的 php 不知道这会是什么样子,因此您的 GD 也不知道。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-29
        • 2011-07-16
        • 2011-10-30
        • 2022-10-20
        • 2011-11-12
        • 2019-02-06
        • 2013-09-06
        相关资源
        最近更新 更多