我正在使用插件jsPDF https://github.com/MrRio/jsPDF它生成 PDF 并将其保存到本地文件系统。现在在 jsPDF.js 中,有一些代码可以生成 blob 格式的 pdf 数据,如下所示:
var blob = new Blob([array], {type: "application/pdf"});
并进一步将blob数据保存到本地文件系统。现在我需要使用插件打印 PDF,而不是保存节点打印机 https://github.com/tojocky/node-printer.
这是一些示例代码
var fs = require('fs'),
var dataToPrinter;
fs.readFile('/home/ubuntu/test.pdf', function(err, data){
dataToPrinter = data;
}
var printer = require("../lib");
printer.printDirect({
data: dataToPrinter,
printer:'Deskjet_3540',
type: 'PDF',
success: function(id) {
console.log('printed with id ' + id);
},
error: function(err) {
console.error('error on printing: ' + err);
}
})
The fs.readFile()
读取 PDF 文件并生成原始缓冲区格式的数据。
现在我想要的是将“Blob”数据转换为“原始缓冲区”,以便我可以打印 PDF。
如果您不使用 NodeJS,那么您应该知道浏览器没有 Buffer 类实现,并且您可能正在将代码编译到 browserify 等特定于浏览器的环境。在这种情况下你需要这个图书馆 https://www.npmjs.com/package/blob-to-buffer将你的 blob 转换为 Buffer 类,该类应该与 NodeJS 完全相等Buffer
尽可能的对象(实现位于费罗斯/缓冲器 https://github.com/feross/buffer).
如果您正在使用node-fetch
(不是OP的情况)那么你可能从响应对象中得到一个blob:
const fetch = require("node-fetch");
const response = await fetch("http://www.stackoverflow.com/");
const blob = await response.blob();
该 blob 是一个内部实现,仅存在于内部node-fetch
or fetch-blob
库,将其转换为原生 NodeJSBuffer
对象,您需要首先将其转换为 arrayBuffer:
const arrayBuffer = await blob.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
然后可以将该缓冲区对象用于文件写入和服务器响应等操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)