You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pdfMake一次打印多份文档?

解决pdfMake一次打印多份文档的问题

问题说明

使用pdfMake打印单份文档正常,但需要实现一次打印多份的功能,官方文档及网络未找到明确方案,自行尝试将文档内容数组化(如var dd = [d, d])后打印,结果为空白页。

现有代码

function() {
  // 生成文档内容d,已验证内容正确
  const win = window.open('', "tempWinForPdf");
  pdfMake.createPdf(d).print({}, win);

  setTimeout(() => {
    win.close();
  }, this.printTime);
}

注:printTime为控制临时窗口关闭延迟的毫秒数

可行解决方案

方案一:串行调用打印方法(利用回调)

pdfMake的print方法支持第三个参数作为打印完成的回调,通过串行调用实现多份打印:

function printMultipleCopies(docConfig, copyCount) {
  const win = window.open('', "tempWinForPdf");
  let printedCopies = 0;

  function printNext() {
    if (printedCopies < copyCount) {
      pdfMake.createPdf(docConfig).print({}, win, () => {
        printedCopies++;
        printNext();
      });
    } else {
      setTimeout(() => {
        win.close();
      }, this.printTime);
    }
  }

  printNext();
}

// 调用示例:打印3份目标文档
printMultipleCopies(d, 3);

方案二:合并多份内容为单个PDF

将目标文档的内容复制多份,合并到同一个文档配置中,生成包含多份内容的PDF后一次性打印:

// 生成包含3份内容的文档配置
const multiCopyDoc = {
  ...d,
  content: Array.from({ length: 3 }, () => [...d.content]).flat()
};

const win = window.open('', "tempWinForPdf");
pdfMake.createPdf(multiCopyDoc).print({}, win);

setTimeout(() => {
  win.close();
}, this.printTime);

数组化尝试失败原因

pdfMake的createPdf方法仅接受单个文档配置对象作为参数,直接传入文档配置数组会导致解析失败,最终输出空白页。

内容的提问来源于stack exchange,提问作者Cram245

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 06:01:04