Php 将HTML表另存为图像

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

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

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

任何帮助都会很好。我现在有点不知所措。

可行的解决方案

  • 使用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是第二种选择,应该是:)