我有带有$ _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调用时认为是正常的。)
感谢任何提示
答案 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}"
据我所知,没有简单的方法可以做到,但这是可行的
希望对某人有帮助