如何在 Angular 9 中使用 print.js 打印多个 PDF

2023-12-27

我尝试使用打印 PDFprint.js https://printjs.crabbly.com/库,它对于单个 PDF 打印工作得很好。现在,当我尝试打印多个 PDF 时,它会抛出一个错误错误:错误多项选择。。另外,我尝试过使用纯 JS,但它会多次提示多个文档。

下面是我们正在使用的代码。

printJS({ 
         printable: ['dummy.pdf', 'dummy1.pdf'], 
         type:'pdf'
        });

请找到附件。

enter image description here Any help much appreciate!!


最后,经过 1 周的时间,我能够使用 Angular 9 中的 print.js 打印多个 PDF。 以下是打印多个 pdf 的步骤:

  1. 安装 npm 模块:PDF-lib

    npm i pdf-lib

  2. 在 Angular 文件中导入 npm 模块,并使用以下代码将多个 pdf 合并为单个 pdf(例如 app.components.ts)

    import { PDFDocument } from 'pdf-lib'
    @Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.scss']
    })
    
    export class AppComponent {
    title = 'print-multiple-pdfs';
    
    /* Convert the merged pdf array buffer to blob url for print or open in browser.*/
    downloadFile(data) {
     const blob = new Blob([data], { type: 'application/pdf' });
     const url= window.URL.createObjectURL(blob);
     //window.open(url);
     printJS({
       printable: url,
       type: 'pdf',
     })
    }
    
    async printPDFS() {
     /* Array of pdf urls */
     let pdfsToMerge = ['https://cors-anywhere.herokuapp.com/https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf', 'https://cors-anywhere.herokuapp.com/http://africau.edu/images/default/sample.pdf', 'https://cors-anywhere.herokuapp.com/https://www.hq.nasa.gov/alsj/a17/A17_FlightPlan.pdf']
    
     const mergedPdf = await PDFDocument.create();
     for (const pdfCopyDoc of pdfsToMerge) {
     const pdfBytes = await fetch(pdfCopyDoc).then(res => res.arrayBuffer())
     //const pdfBytes = fs.readFileSync(pdfCopyDoc);
     const pdf = await PDFDocument.load(pdfBytes);
     const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
     copiedPages.forEach((page) => {
       mergedPdf.addPage(page);
     });
    }
    const mergedPdfFile = await mergedPdf.save();
    this.downloadFile(mergedPdfFile);
     }
    }
    
  3. 调用打印函数(app.component.html)

    <button (click)="printPDFS()">print pdfs</button>

参考:pdf-lib https://www.npmjs.com/package/pdf-lib

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Angular 9 中使用 print.js 打印多个 PDF 的相关文章

随机推荐

  • 解析矩阵的嵌套 for 循环的时间复杂度

    假设我有一个包含 X 行和 Y 列的矩阵 元素总数是 X Y 对吗 那么这是否使得 n X Y for i 0 i
  • Android APK 文件的 MD5 校验和不同。为什么?

    我注意到 如果我编译一个 Android 应用程序两次 一次紧接另一次且没有任何更改 则两个 APK 文件具有两个不同的 MD5 校验和 未签名和签名的 APK 文件都会产生相同的结果 您可以将其作为 ZIP 文件打开 其中的内容在两个文件
  • 使用唯一索引为列表建立索引

    我有一个清单说l 10 10 20 15 10 20 我想为每个唯一值分配一个特定的 索引 来获取 1 1 2 3 1 2 这是我的代码 a list set l res a index x for x in l 结果发现速度非常慢 l有
  • 对 UTF-8 字符串数组进行排序,以便平等对待无重音字母

    我正在尝试比较两个字符串 milie and Zoey Well E出现在之前Z但在 ASCII 图表上Z出现在之前 所以一个正常的if str1 gt str2 行不通的 我尝试过if strcmp str1 str2 gt 0 但这仍然
  • SAPUI5 视图,访问面板标题的模型项

    我有以下模型 categories 1 0 1 categoryDesc Production 2 0 1 2 categoryDesc Documentation 还有下面的景色
  • 可以在 Amazon S3 API 中使用伪“锁定”对象吗?

    我正在考虑使用 锁定 S3 对象 以防止对给定 S3 对象同时进行相同的操作 但我对这个技术方案的有效性抱有很大的怀疑 更准确地说 在对对象进行操作开始时 将创建与对象名称和所执行操作类型相对应的锁定文件 示例 在 myObject 上的
  • 进程异常终止时的资源清理

    我的问题是 当一个进程异常终止时 通过信号 它可能是 SIGKILL 所以我们无法拦截它 是否有任何保证的顺序或原子性来释放其资源 我特别对文件锁和共享内存感兴趣 例如 1 如果进程持有 2 个文件的锁并异常终止 是否有可能另一个试图锁定相
  • 使用 RxJS 进行 Angular 2 轮询

    我正在尝试轮询 RESTful 端点来刷新我的实时聊天消息 我知道实时聊天的最佳方法是 Websockets 我只是想了解 RxJS 如何与 Angular 2 配合使用 我想每秒检查一次新消息 我有以下代码 return Rx Obser
  • Docker Java 应用程序无法从控制台获取输入

    我正在尝试为我的 java 应用程序创建一个 docker 映像 启动时需要为该应用程序提供密码 当前通过控制台 我尝试了多种获取输入的方法 但都失败了 这是 docker 的限制吗 如果是 有解决方法吗 对于这个片段 Console co
  • 页面中脚本标记的位置如何影响其中定义的 JavaScript 函数?

    我读到你应该在中定义你的 JavaScript 函数标签 但是它的位置如何
  • 跨线程操作在 C# 中无效[重复]

    这个问题在这里已经有答案了 可能的重复 跨线程操作无效 从创建它的线程以外的线程访问控制 https stackoverflow com questions 142003 cross thread operation not valid c
  • RTSP RTP 客户端流、时间戳、live555

    我有一个位于不同国家 地区的网络摄像机 具有不同的时区 并且应用了它自己的日期时间值 例如 2012 04 16 11 30 00 然后是我的电脑所在的位置 例如我的电脑时间是 2012 14 16 06 10 00 我的目的 流式传输时
  • 使用bash(最好是sed)命令删除markdown(md)文件中的图像和链接标签

    我在 git wiki 上有 markdown md 文件 我正在将其更改为 html 我不想在 html 文件中包含图像和链接 我们的 Markdown 图像如下所示 Alt text path to img jpg Optional t
  • 如何根据经度和纬度过滤geodjango

    我有一个存储经度和纬度的应用程序 现在我想将它与 geodjango 集成 应用程序如下所示 class Location models Model other fields here lat models CharField blank
  • Typescript:在静态方法中使用子类

    在 TypeScript 中 我使用了操场 https www typescriptlang org play 版本 4 13 当我从一个类继承时 this里面一个static父类的方法似乎引用了继承类 class Parent stati
  • CSS 动画填充模式和 z-index 问题

    我在我正在进行的项目中使用 CSS 动画 来自 animate css 我发现 当淡入其中包含绝对定位和 z 索引子项的容器时 子项的 z 索引无法正常工作 我在这个小提琴中重新创建了这个问题 http jsfiddle net Lxsf9
  • Sitecore 软件包安装永无止境

    我遇到了一个有趣的问题 当我安装 Sitecore 软件包时 当软件包完全安装后 用户界面永远不会更新 Sitecore 软件包安装挂起 在 Sitecore 日志中我看到 ManagedPoolThread 18 11 36 00 INF
  • 如何在远程计算机上的 Invoke-Command 引发的异常中保留 ScriptStackTrace?

    我正在编写一个 Powershell 脚本 它执行构建 部署过程中的步骤之一 并且需要在远程计算机上运行一些操作 该脚本相对复杂 因此如果在远程活动期间发生错误 我需要详细的堆栈跟踪来了解脚本中发生错误的位置 在已生成的日志记录之上 出现问
  • Java 事后调试?

    是否可以在 Java 中进行事后 或异常后 调试会话 解决方法是什么 如果还没有解决方案 您可以将调试器附加到 java 进程并在特定情况下设置断点 收到异常 这是你需要的吗 From http java sun com j2se 1 5
  • 如何在 Angular 9 中使用 print.js 打印多个 PDF

    我尝试使用打印 PDFprint js https printjs crabbly com 库 它对于单个 PDF 打印工作得很好 现在 当我尝试打印多个 PDF 时 它会抛出一个错误错误 错误多项选择 另外 我尝试过使用纯 JS 但它会多