这里,我将提供所有必要的参数,例如 /?plant_id = 3&project_id = 121&username =[电子邮件保护]
和其他所需的标题。
即时不在那个打印页面上或查看该打印页面,我可以以pdf下载网页吗?
我只希望CTRL + P功能在下载PDF按钮上工作。
我只想在前端(Angular)上完成所有这些操作,我不能使用后端,因为在印刷页面中,我的SVG非常非常复杂,还有一些其他复杂的样式,这些样式在Angular中进行了正确处理。
我已经尝试了后端,并且正在使用Weasyprint Python库,该库将HTML转换为PDF.
因此,我必须与Angular HTML模板写入相同的Django HTML模板。
正确制作HTML文件后,所有数据已被串联,然后使用Weasyprint将HTML转换为PDF。
但是,我的复杂的SVG并未适当地使用Weasyprint制造。
django html-
(https://i.sstatic.net/jpabc1y2.png)
通过weasyprint生成的PDF (Https://i.sstatic.net/yjmzymkx.png)
是的,您可以绝对可以下载一个网页,而无需实际导航。我知道有几种方法:
使用HTML2Canvas + JSPDF:
generatePDF() {
const iframe = document.createElement('iframe');
iframe.style.visibility = 'hidden';
iframe.src = 'http://localhost:4200/#/print/layout?plant_id=3&project_id=121';
iframe.onload = () => {
html2canvas(iframe.contentDocument.body).then(canvas => {
const pdf = new jsPDF();
pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0, 211, 298);
pdf.save('document.pdf');
document.body.removeChild(iframe);
});
};
document.body.appendChild(iframe);
}
this.http.get('http://localhost:4200/#/print/layout?params', {responseType: 'text'})
.subscribe(html => {
// Insert into temp div and convert with html2canvas/jsPDF
});
这些方法可能仍然与您的复杂SVG斗争。要在不重建模板的情况下进行完美渲染,请考虑使用
Https://pagesnap.co