将HTML表格另存为图像

问题描述 投票:6回答:5

我有一个我正在构建的网站,它从表单中获取数据(人名)并将其发布到下一页表格中的自定义“注释”中。我希望用户能够将他们的“注释”保存为带有自定义名称的图像。有没有办法将特定HTML表格保存为PNG?也许在网页上截取特定坐标的屏幕截图?

如果没有,是否有办法在HTML画布中从表单中呈现已发布的PHP内容?

任何帮助都会很棒。我现在有点过头了。

php html image html-table screenshot
5个回答
2
投票

您可以在客户端尝试this JS library


2
投票

虽然您可以使用各种工具呈现HTML,但您无法确定这些工具是否会像浏览器呈现HTML一样呈现HTML。

如果您的最终目标是生成带有文本的图像,那么让我们解决该问题,而不是尝试使您建议的解决方案有效。

看看PHP的imagettftext()功能。它包含一个Example#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模块。如果是这种情况,您应该咨询服务器管理员,以确保您可以使用所需的内容。


1
投票

可行的解决方案

  • 使用fpdf从html(表)创建pdf
  • 使用imagemagick将pdf转换为png

0
投票

你也可以使用Xvfb。这是一个linux包。它代表“X-window Virtual Frame Buffer”(如果你想知道它为什么在地球上有这样一个深奥的名字)。

它将做什么,是加载页面,执行任何JavaScript并应用CSS中的不同样式,所有这些都在服务器的帧缓冲区中。然后你可以保存图像。

Xvfb可能不会在大多数共享托管服务上提供,但是,如果这无关紧要,那么它将是一个可行的解决方案。


0
投票

你可以使用像html2ps这样的东西

© www.soinside.com 2019 - 2024. All rights reserved.