javascript - 将包含图像的 HTML 渲染为 PDF Django
问题描述
我有一个 django 应用程序,用户可以在其中打印一些包含图像的页面,作为数据处理的一部分。
我尝试了 jsPDF,但它没有渲染我的图像,最后我只得到了文本
$(document).ready(function() {
$("#pdfDownloader").click(function() {
var doc = new jsPDF('p', 'pt', 'a4', true);
doc.fromHTML($('#renderMe').get(0), 15, 15, {
'width': 500
}, function (dispose) {
doc.save('thisMotion.pdf');
});
});
})
这是我的代码,它没有渲染图像,所以我需要改变什么吗?
使用 Django 视图可以解决这个问题,是否有任何替代方法可以xhtml2pdf
将我的 CSS 包含在 HTML 文件中?
解决方案
fromHTML用于从 HTML 中获取文本以形成 PDF。尝试改用 html2canvas js 库。
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.5.0-beta4/html2canvas.min.js"></script>
您可以使用如下代码创建画布图像并将其添加到 PDF 中,
$(document).ready(function() {
$("#pdfDownloader").click(function() {
html2canvas($("#renderMe")).then(canvas => {
const contentDataURL = canvas.toDataURL('image/png')
let pdf = new jspdf('p', 'pt', 'a4', true); // A4 size page of PDF
var positionX = 0;
var positionY = 0;
pdf.addImage(contentDataURL, 'PNG', positionY, positionY, undefined, undefined)
pdf.save('thisMotion.pdf'); // Generated PDF
});
});
})
这将为您提供一个 PDF,就像在屏幕上呈现的 HTML 一样。
推荐阅读
- python - 使用循环创建 Matplotlib 绘图
- enums - 在 Systemverilog 中访问枚举名称
- solr - 无法启动 solr 7.5
- java - spring boot,子实体,记录自动删除,不保存更新
- r - 如何在缺少数据的回归模型上使用 anova()?
- java - Java Swing App 为什么不以屏幕为中心?
- if-statement - 在多个单元格上减去值
- sql - SQL 更新 where select top(num)
- dynamics-crm - 是否可以使用“/api/data/”创建“customeraddress”实体记录
/' 接口? - variables - 如何动态加载 var 文件并使用 ansible 将它们组合成一个变量