angular - 我有一个发票列表 - 我需要显示一个包含所有发票的打印对话框,然后用户可以将它们全部发送到打印机
问题描述
~html
click printSelectedInvoices();
~typescript
import * as pdfMake from 'pdfmake/build/pdfmake';
import * as pdfFonts from 'pdfmake/build/vfs_fonts';
printSelectedInvoices(){
invoiceArray.forEach((invoice) => {
var invoicePdf = {
// DESIGN
};
pdfMake.createPdf(invoicePdf).open({});
})
}
“目前,这是打开发票计数选项卡并可以打印个人。这应该是一个打印对话框并打印所有发票。有人知道如何做到这一点吗?请帮帮我。”
解决方案
安装 npm 模块:PDF-lib
npm i pdf-lib
import JsBarcode from 'jsbarcode/bin/JsBarcode'
import * as printJS from 'print-js';
import { PDFDocument } from 'pdf-lib'
invoiceJsArray.forEach(async (pdfs) => {
pdfMake.createPdf(pdfs).getBuffer(async function (buffer) {
const pdf = await PDFDocument.load(buffer);
const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
copiedPages.forEach((page) => {
mergedPdf.addPage(page);
});
const mergedPdfFile = await mergedPdf.save();
const blob = new Blob([mergedPdfFile], { type: 'application/pdf' });
const url = window.URL.createObjectURL(blob);
// window.open(url);
printJS({
printable: url,
type: 'pdf',
})
})
});
推荐阅读
- state - 在 DFA 中,被困状态是否在字母表的每个符号上都有转换?
- python - 根据另一个列表列表过滤列表列表
- java - 如何在Java中读取以特定字符开头并以特定字符结尾的字符串含义
- php - nginx 拒绝从站点应用样式
- javascript - 动态添加和删除事件监听器
- list - Prolog - 如何获取由树上所有可能路径组成的列表列表?
- javascript - 每次鼠标向上或向下滚动时,如何通过移动到每个 div 标签来替换默认的鼠标滚动行为?
- python - 有条件地将 pandas.DataFrame 中的值替换为以前的值
- android - 应用程序在启动时在模拟器上崩溃,但在设备上却没有
- c# - 类装饰器和继承类的区别