将DIV保存为图像

时间:2012-10-04 11:25:27

标签: php html gd

我有:

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:3)

您可以使用wkhtmltoimage

等工具进行渲染

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

答案 2 :(得分:1)

您可以在GD中构建表格和编写文本,当然,但不能从HTML中编写 - 您必须自己构建表格(有效地逐行绘制表格然后填写)

正如其他一些用户已经解释的那样,HTML呈现在客户端,而不是服务器端,你的php不知道它的外观如何,因此你的GD也不会。