微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 jsPDF 呈现多个分页结果HTML 到 PDF

如何解决如何使用 jsPDF 呈现多个分页结果HTML 到 PDF

我正在尝试打印多个 jsPDF.HTML(...) 的结果。它们中的每一个都在同一 div 内的列表的不同分页中运行。该 div 的 PDF 转换会多次显示第一页,即使我可以在执行每个 jsPDF.HTML(...) 之前看到其中的项目在 UI 中发生变化。

是否有解决方案或至少解释为什么会发生这种情况?

  async printReceipt() {
    console.log('getting the number of pages in the pagination');
    var lenArr = new Array(Math.ceil(this.receiptItems.length / 10));
    var doc = new jsPDF('p','pt',[496,702]);
    var arrayBuffer: ArrayBuffer[] = [];
    var fileURL;
    console.log('creatting main doc');
    for (let index = 0; index < lenArr.length; index++) {
      console.log('Changing pagination to:',index + 1);
      this.page = index + 1;
      console.log('Converting page:',index + 1);
      await new Promise<void>(async (resolve,reject) => {
        doc.html(document.getElementById('receipt'),{
          callback: async (res) => {
            console.log('Adding page to buffer,page:',index + 1);
            arrayBuffer.push(res.output('arraybuffer'));
            if (lenArr.length - 1 == index) {
              console.log('Printing');
              await this.mergePdfs(arrayBuffer);
            }
            resolve();
          },});
      });
    }
  }

日志顺序:

enter image description here

解决方法

我通过将 jsPDF 对象的声明移到 promise 中并在页面更改和 promise 之间添加超时来解决该问题。

{{1}}

看起来无论这个方法是否被多次执行,jsPDF对象都会保留jsPDF.html(...)的第一个结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?