javascript - 如何添加在使用 jspdf 创建的 pdf 中不可见或未呈现的元素(以及 html2canvas)
问题描述
假设我有两个元素根据路线有条件地呈现。但是在创建 pdf 文档时,我想在不同页面中添加两个元素,并且两个页面都有共同的标题。
我尝试更改路线,然后在 pdf 文档中添加捕获页面的图像。但这会导致屏幕闪烁,并有额外的任务来跟踪页面的当前状态。
父组件
<div id="print-container">
<h2>Document Header</h2>
<div class="tabs-wrapper">
<a class="tabs" routerLink="/one">
First
</a>
<a class="tabs" routerLink="/two">
Second
</a>
</div>
<router-outlet></router-outlet>
</div>
第一个组件
<span> Displaying First </span>
第二部分
<span> Displaying Second </span>
Parent 中的 Angular 代码
let pdf = jsPDF({
orientation: "landscape",
format: "a3"
});
let currentRoute = this.router.url;
let container = document.getElementById("print-container");
this.router.navigateByUrl("/one");
await html2canvas(container).then(canvas => {
let imgData = canvas.toDataURL("image/jpeg", 1.0);
pdf.addImage(imgData, 0, 0);
pdf.addPage();
});
this.router.navigateByUrl("/two");
await html2canvas(container).then(canvas => {
let imgData = canvas.toDataURL("image/jpeg", 1.0);
pdf.addImage(imgData, 0, 0);
});
this.router.navigateByUrl(currentRoute);
pdf.save("DOC");
我希望将 pdf 创建为
Document Header
Displaying First
Document Header
Displaying Second
解决方案
推荐阅读
- javascript - api调用多次时有时会取消AJAX请求
- javascript - 节点中的sqlite3 uri语法
- excel - 使用公式从具有不同工作簿名称的不同工作表中获取值
- swift - 从 UIButton 更改后的 UIBarButtonItem 错误
- ember.js - Route 上的数据未从 API 重新加载/重新获取
- sql - SQL:按字段 a 或字段 b 对行进行分组
- python - 如何将类似 json 或 xml 的字符串转换为可用的 python 对象
- mysql - 选择语句格式
- swift - 检查 Swift 中变量的类型(是类、结构还是枚举)
- python - 如何按日期排序,然后按日期添加另一列的总数