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

时间:2020-04-29 04:56:21

标签: php api html2canvas

我有带有$ _POST的php API,在这里我从请求中获取API密钥和QR码。 然后我的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调用时认为是正常的。)

感谢任何提示

1 个答案:

答案 0 :(得分:0)

好,所以我的解决方法如下:

在我的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}"

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

希望对某人有帮助