html2canvas - 渲染图片而不显示页面

html2canvas - render picture without displaying the page

我有 php API 和 $_POST ,我从请求中获取 API 密钥和二维码。 然后我的 php 服务器生成带有 <div>, <img> <html> <body> 等的 html 代码。这意味着完整的网站 - 从 mysql 服务器获取数据并呈现到 html 页面。 在 php 代码的末尾,我有 javascript 代码如下:

?>
<script>


    window.scrollTo(0, 0);

html2canvas(document.getElementById("SelectorToPrint")).then(function (canvas) {
    var dd= canvas.toDataURL("image/jpeg",1);

    $.ajax({
  type: "POST",
  url: "https://myserver/API/sendimg.php",
  data: { 
      key: '<?php echo $key;?>',
      barkod: '<?php echo $qrcode;?>',
     img: dd
  }
}).done(function(o) {

});

});

</script>

当我显示页面时,正在保存图片(使用html2canvas js),一切正常。

问题是,当我从另一个 php 代码调用这个 API 请求时,页面没有显示,因此图片没有呈现。

有没有什么方法可以在不显示生成的 html 代码的情况下呈现 html 页面并保存图片?

我更改了一段时间的代码 - 没有 $_POST ,但是 $_GET 并使用此代码进行测试:

<?php
    $key='my_api_key';
    $qrcode='my_code';

    $test = file_get_contents('https://myserver/API/apipage.php?key='.$key.'&qrcode='.$qrcode);
    //var_dump($test) ;
?>

当从代码中删除var_dump时,页面不会呈现,图片也不会保存。当我启用 var_dump (或简单地 print_r 或 echo )时,图片会正确生成。问题是,我不想显示 html 代码(我认为在谈论 API 调用时这是正常的)。

感谢任何提示

好的,我的解决方案如下:

在我的 linux 服务器上安装了 xvfb

为 php

安装了 ssh2

在我的 linux 服务器上安装了 CutyCapt

而不是直接调用和渲染图片 - 我使用专门创建的用户(仅具有执行此工作的权限)直接从 php API

调用以下脚本
 "/usr/bin/xvfb-run --server-args='-screen 0, 1920x1080x24' /usr/bin/CutyCapt --url='{$url}' --zoom-factor=1.4 --out=/home/myuser/public_html/rendered_images/{$filename}.{$extension}"

所以据我所知,没有简单的方法可以做到,但它是可行的

希望对某人有所帮助