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}"
所以据我所知,没有简单的方法可以做到,但它是可行的
希望对某人有所帮助
我有 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}"
所以据我所知,没有简单的方法可以做到,但它是可行的
希望对某人有所帮助