javascript - html页面截图到pdf使用html2canvas和jspdf
问题描述
我正在尝试通过 php 页面的屏幕截图创建收据或发票到 pdf。我在 youtube 上找到了一个源代码并为自己尝试过,但是,它没有保存或下载任何 pdf。
这是代码,我使它尽可能短以便能够重新创建:
<html>
<body>
<div id="test">
<h1> Hello! Screenshot Me!</h1>
</div>
<button onclick="ss()">screenshot</button>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.2.0/jspdf.umd.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
<script>
function ss(){
html2canvas(document.getElementById('test')).then(function(canvas){
document.body.appendChild(canvas);
var imgdata = canvas.toDataURL("image/jpg");
var doc = new jsPDF();
doc.addImage(imgdata,"JPG",10,10);
doc.save("sample.pdf");
});
}
</script>
</html>
在我观看的youtube中,每当他点击按钮时,它都会下载一个sample.pdf,这个没有或者我错过了什么,请帮忙
解决方案
这是 2020 年 12 月 16 日的工作代码
这只是一个问题
- 引用旧版本的 html2canvas
- 引用旧版jspdf
- 对 jspdf 的 API 调用略有错误
干杯
<html>
<body>
<div id="test">
<h1> Hello! Screenshot Me!</h1>
</div>
<button id="btn">screenshot</button>
</body>
<script src="https://unpkg.com/jspdf@latest/dist/jspdf.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/html2canvas@1.0.0-rc.7/dist/html2canvas.min.js"></script>
<script>
window.onload = function () {
console.log("Window is loaded")
document.getElementById('btn').addEventListener("click", function () {
html2canvas(document.getElementById('test')).then(function (canvas) {
document.body.appendChild(canvas);
var imgdata = canvas.toDataURL("image/jpg");
var doc = new jspdf.jsPDF();
doc.addImage(imgdata, "JPG", 10, 10);
doc.save("sample.pdf");
});
})
}
</script>
</html>
推荐阅读
- r - R/tidyverse 中的包围时间间隔
- android - FCM 通知“click_action”不起作用
- python - 用平均值替换尖峰数据点 - Pandas 数据帧
- python - python制作一个列表的多个列表
- javascript - 使用 Sequelize 将多个参数安全地发送到 IN 子句以进行原始查询
- react-native - 如何在完全离线时使用 MongoDB Synced Realm 数据库的本地副本?
- javascript - jQuery - 隐藏一个 div 并显示多个其他 div
- javascript - ag-grid :- enableMultiRowDragging 在 ag-grid 24 中不起作用
- angular - 如何停止对重复函数调用的旧调用
- mysql - 在 MySQL 查询中放置别名的位置