我有一个网站,我正在构建一个从表单中获取数据(人员姓名)并将其张贴到下一页表格中的自定义“注释”中的网站。我希望用户能够将他们的“笔记”保存为一张带有自定义名称的图像。有没有办法将一个SPECIFIC HTML TABLE保存为PNG?也许截取网页上的特定坐标的截图?将HTML表格保存为图像
如果不是有没有办法在HTML画布中呈现张贴的PHP内容?
任何帮助将是伟大的。我现在有点头痛。
我有一个网站,我正在构建一个从表单中获取数据(人员姓名)并将其张贴到下一页表格中的自定义“注释”中的网站。我希望用户能够将他们的“笔记”保存为一张带有自定义名称的图像。有没有办法将一个SPECIFIC HTML TABLE保存为PNG?也许截取网页上的特定坐标的截图?将HTML表格保存为图像
如果不是有没有办法在HTML画布中呈现张贴的PHP内容?
任何帮助将是伟大的。我现在有点头痛。
可行的解决方案
您可以使用类似html2ps
你可以也使用Xvfb。这是一个Linux软件包。它代表“X-window虚拟帧缓冲器”(如果你想知道为什么它有这么深奥的名字)。
这将做什么,是加载一个页面,执行任何JavaScript并将CSS中的不同样式应用于服务器的帧缓冲区。然后你可以保存图像。
Xvfb可能不会在大多数共享托管服务上可用,但是,如果没关系,那么它将是一个可行的解决方案。
虽然您可以使用各种工具呈现HTML,但您无法确定这些工具是否会像浏览器呈现HTML一样呈现HTML。
如果你的最终目标是它生成的文本图像,然后让我们来解决,而不是试图让您建议的工作解决了这个问题。
看看PHP的imagettftext()函数。它包含一个示例#1它从文本创建一个小的,简单的图像,可以存储在任何变量中......包括一个表单变量。
通过使用这个例子,并添加一些其他的PHP's GD functions,你可以做一个体面的副本的表,并确保它看起来完全按照你想要的方式,而不是html2ps或其他工具呈现它的方式。
<?php
// Set the content-type
header('Content-Type: image/png');
// Create the image
$im = imagecreatetruecolor(400, 30);
// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
// The text to draw
$text = isset($_POST['name']) ? $_POST['name'] : "name";
// Replace path by your own font path
$font = 'arial.ttf';
// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);
// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>
这里是由上面的脚本生成的样本输出:
注意,您需要提供arial.ttf
按照指示在上面的链接。
如果事情不起作用,请在继续操作之前在屏幕上和Web服务器的错误日志中查找错误。您的Web服务器上可能没有安装PHP的GD模块。如果是这种情况,您应该与您的服务器管理员联系,确保您需要的是可用的。
我认为做这个服务器端对于这项任务来说是一种矫枉过正可以通过@Anber建议的图书馆以更简单的方式完成。这里的示例http://jsfiddle.net/arthurcamara/6phhb5g9 – 2016-04-28 20:52:14
@ArthurCamara - 我同意做这个客户端提供了一个更清晰的解决方案,但OP的问题是关于如何在PHP中生成PNG。 – ghoti 2016-04-29 13:53:55
我认为他的问题是关于用表格生成PNG。和“如果不是有办法呈现张贴的PHP”。所以PHP是第二种选择,因为它应该是:) – 2016-05-04 17:49:10
您可以在客户端尝试this JS library。
对我来说,这也是一个更清洁的解决方案。 JSFiddle示例(html2canvas)在这里:https://jsfiddle.net/arthurcamara/6phhb5g9/ – 2016-04-28 20:49:45
这是一个有用的库。如果这个链接的回答[提供了上下文](http://stackoverflow.com/help/how-to-answer),并且解决了问题中提到的要求,那也是非常好的:“*我希望用户能够能够将他们的“笔记”保存为一张带有其定制名称的图像。*“ – ghoti 2016-04-29 13:55:46
与@ghoti达成一致:)更多的上下文和更深入的回答将非常棒。使用画布还可以在画面上显示自定义名称的注释,因此为此提供客户端解决方案应该没有问题。 – 2016-05-04 17:52:04
看看php的内置图像功能:http://nz.php.net/manual/en/refs.utilspec.image.php – 2012-03-06 20:15:26