4

我有:

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

4

3 回答 3

6

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

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

于 2012-10-04T12:12:08.360 回答
3

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

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

于 2012-10-04T12:14:33.100 回答
1

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

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

于 2012-10-04T14:16:49.360 回答