我有:
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
答案 0 :(得分:6)
要比我的评论更进一步解释:HTML的呈现是由您的浏览器完成的。 PHP是服务器端的,因此它不知道如何呈现HTML,也不会知道。这意味着你将需要能够呈现HTML并将渲染结果保存到图像的“东西”,而PHP可以与它“对话”。为此,wkhtmltoimage有效(给它一个URL,最后你会得到一个可以裁剪的JPG)。我也听说过有关phantomjs的好消息,这可能更适合你的目标,因为你可以“选择”某个div。
如果您完全不使用任何外部工具,那么您基本上没有选择。
答案 1 :(得分:3)
您可以使用wkhtmltoimage
等工具进行渲染由于它不是用php编写的,这意味着你可以在服务器上安装它并从php运行它。
答案 2 :(得分:1)
您可以在GD中构建表格和编写文本,当然,但不能从HTML中编写 - 您必须自己构建表格(有效地逐行绘制表格然后填写)
正如其他一些用户已经解释的那样,HTML呈现在客户端,而不是服务器端,你的php不知道它的外观如何,因此你的GD也不会。