Php 将HTML表另存为图像
我有一个我正在建立的网站,它从表单中获取数据(人名),并将其发布到下一页表格中的定制“备注”中。我希望用户能够将他们的“便笺”保存为带有自定义名称的图像。有没有办法将特定的HTML表保存为PNG?也许可以在网页上截取特定坐标的屏幕截图 如果没有,是否有办法在HTML画布中呈现表单中发布的PHP内容 任何帮助都会很好。我现在有点不知所措。可行的解决方案Php 将HTML表另存为图像,php,html,image,html-table,screenshot,Php,Html,Image,Html Table,Screenshot,我有一个我正在建立的网站,它从表单中获取数据(人名),并将其发布到下一页表格中的定制“备注”中。我希望用户能够将他们的“便笺”保存为带有自定义名称的图像。有没有办法将特定的HTML表保存为PNG?也许可以在网页上截取特定坐标的屏幕截图 如果没有,是否有办法在HTML画布中呈现表单中发布的PHP内容 任何帮助都会很好。我现在有点不知所措。可行的解决方案 使用fpdf从html(表格)创建pdf 使用imagemagick将pdf转换为png 您可以使用类似的东西,您也可以使用。这是一个linux
- 使用fpdf从html(表格)创建pdf
- 使用imagemagick将pdf转换为png
- 您可以使用类似的东西,您也可以使用。这是一个linux软件包。它代表“X窗口虚拟帧缓冲区”(如果你想知道它到底为什么有这么一个深奥的名字)
这将要做的是加载一个页面,执行任何JavaScript并应用CSS中的不同样式,所有这些都在服务器的帧缓冲区中。然后您可以保存图像
Xvfb可能无法在大多数共享主机服务上使用,但是,如果这不重要,那么它将是一个可行的解决方案。虽然可以使用多种工具呈现HTML,但不能确保这些工具将以浏览器呈现HTML的方式呈现HTML
<?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);
?>
如果您的最终目标是生成带有文本的图像,那么让我们来解决这个问题,而不是尝试让您建议的解决方案起作用
看看PHP的函数。它包含一个示例#1,它从可以存储在任何变量中的文本创建一个小而简单的图像。。。包括一个表单变量
通过使用这个例子,并添加一些其他的,您可以制作一个像样的表副本,并确保它看起来完全符合您的需要,而不是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模块。如果是这种情况,您应该与您的服务器管理员联系,以确保您所需的可用性。您可以在客户端尝试。看看php的内置图像函数:对我来说,这也是一个更干净的解决方案。JSFIDLE示例和建议的库(html2canvas)如下:这是一个有用的库。如果这个链接的答案符合问题中的要求:“我希望用户能够将他们的“便笺”保存为带有自定义名称的图像。”同意@ghoti:)更多的上下文和更深入的答案将非常棒。使用canvas也可以在图像上显示自定义名称的便笺,因此为此提供客户端解决方案应该不会有问题。我认为在服务器端执行此任务是一种过分的做法,可以使用@Anber建议的库以更简单的方式完成。这里的例子@ArthurCamara-我同意这样做客户端有助于获得更干净的解决方案,但OP的问题是如何在PHP中生成PNG。我认为他的问题是关于使用表生成PNG。以及“如果没有,有没有一种方法可以呈现发布的PHP”。所以PHP是第二种选择,应该是:)