我想要创建一个非常大的html表的pdf。
我利用角质材料7虚拟卷动来创建那张表。
以下是html模板代码:
<cdk-virtual-scroll-viewport itemSize="1" class="example-viewport">
<table class="table table-bordered table-striped table-condensed" >
<tbody id="test">
<tr *cdkVirtualFor="let arrangement of final; let i = index" (click)="onSelected(i)" [class.selected]="selectionne[i]" class="example-item">
<td><button mat-raised-button color="primary">No {{i+1}}</button></td>
<td *ngFor="let element of arrangement">{{element}}</td>
</tr>
</tbody>
</table>
这是负责创建pdf的组件功能:
exportAll(){
var data = document.getElementById('test');
html2canvas(data).then(canvas => {
// Few necessary setting options
var imgWidth = 208;
var pageHeight = 295;
var imgHeight = canvas.height * imgWidth / canvas.width;
var heightLeft = imgHeight;
var position = 0;
const contentDataURL = canvas.toDataURL('image/png')
let pdf = new jspdf('p', 'mm', 'a4'); // A4 size page of PDF
pdf.addImage(contentDataURL, 'PNG', 0, position, imgWidth, imgHeight);
pdf.addPage();
pdf.save('MYPdf.pdf'); // Generated PDF
});}问题是,只创建了一个不到30行的页面,其余的行都没有被更改。
所以,这种情况是因为我使用虚拟滚动来呈现表吗?
我能做什么把我所有的表转换成pdf?
发布于 2019-01-28 05:01:12
因为虚拟卷轴只是将"ngFor“替换为"cdkVirtualFor",所以您可以创建打印时切换到的ngTemplate (在exportAll()函数之前设置变量/布尔值)。
看的时候..。
<ng-container *ngIf="!print; else PRINTING">
<tr *cdkVirtualFor="let arrangement of final; let i = index" ...印刷时..。
<ng-template #PRINTING>
<tr *ngFor="let arrangement of final; let i = index" ...https://stackoverflow.com/questions/53791535
复制相似问题