我正在使用插件 jsPDF它生成 PDF 并将其保存到本地文件系统。现在在 jsPDF.js 中,有一段代码以 blob 格式生成 pdf 数据:-
var blob = new Blob([array], {type: "application/pdf"});
并进一步将blob数据保存到本地文件系统。现在我需要使用插件 node-printer 打印 PDF 而不是保存.
这里有一些示例代码可以做到这一点
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);
}
})
fs.readFile()
读取 PDF 文件并生成原始缓冲区格式的数据。
现在我想要的是将“Blob”数据转换为“原始缓冲区”,以便我可以打印 PDF。
最佳答案
如果您不使用 NodeJS,那么您应该知道浏览器没有 Buffer 类实现,并且您可能正在将代码编译到浏览器特定的环境中,例如 browserify。在这种情况下,您需要 this library将您的 blob 转换为 Buffer 类,该类应该尽可能完美地等于 NodeJS Buffer
对象(实现位于 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
或 fetch-blob
库中,将其转换为原生 NodeJS Buffer
对象,您需要先将其转换为 arrayBuffer:
const arrayBuffer = await blob.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
此缓冲区对象随后可用于文件写入和服务器响应等操作。
关于javascript - 将 Blob 数据转换为 javascript 或 Node 中的原始缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34158497/