angularjs - 为什么javascript中的打印功能在edge中不起作用,但在chrome中起作用
问题描述
您好我有下面的代码来实现打印功能。该代码在 Chrome 中运行良好,但在 Edge 中无法运行。在edge中出现以下错误。我正在generatePDF函数中用javascript构建布局。
下面是我的 JS 代码:
$scope.printRepayment = function() {
var documentDefinition = generatePDF(); pdfMake.createPdf(documentDefinition).print();
}
var generatePDF = function() {
var repayments = $scope.repayments;
var rows = [
[
{ text: "Payment No", style: "tableHeader" },
{ text: "Installment", style: "tableHeader" },
]
];
for (var i = 0; i < repayments.length; i++) {
rows.push([
{ text: i + 1, style: "tablefirst" },
{
text:
"AED " +
numberWithCommas(
parseFloat(repayments[i].installment).toFixed(2)
),
style: "tableOther"
},
]);
}
return {
content: [
{ text: "Repayment schedule", style: "subheader" },
{
style: "tableExample",
table: {
widths: ["*", "*", "*", "*", "*"],
body: rows
},
layout: {
vLineColor: function(i, node) {
return "#ECF3FE";
}
}
}
],
styles: {
tabletop: {
margin: [10, 0, 0, 10]
},
tabletopHeader: {
fontSize: 16,
bold: true
}
}
};
};
解决方案
参考这篇文章,我们可以看到 pdfMake print() 方法不支持 Edge 浏览器。因此,作为一种解决方法,我认为您可以创建一个包含显示 pdf 内容的网页,然后调用该window.print();
方法来打印此页面。否则,如蒲师傅所说,您可以先下载pdf文件,然后打印pdf内容。
推荐阅读
- c++ - 有效防止重复访问
- php - 使用 php tmpfile() 调用的编辑器上的“该进程无法访问该文件,因为它被另一个进程使用”
- javascript - “。” 没有被解析为 require() Node.js 的一部分
- python - 通过 csvs 创建数据框时一次传递多列的 dtypes
- c++ - 获取同一主机名下所有 ipv4 和 ipv6 的列表
- prolog - 在查询中询问时如何编写列出所有城市的规则?
- xcuitest - 如果 XCUITest 中的一项测试失败,如何使相关测试失败?
- c# - 我可以将 foreach 循环内的字典循环转换为 LINQ 语句吗
- javascript - Javascript - 查找字谜的更好解决方案 - 时间复杂度 O (n log n)
- ios - 在执行退出操作时,unwind segue 不会出现在界面构建中