我正在使用插件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了。
答案 0 :(得分:3)
var blob = new Blob([array], {type: "application/pdf"});
var arrayBuffer, uint8Array;
var fileReader = new FileReader();
fileReader.onload = function() {
arrayBuffer = this.result;
uint8Array = new Uint8Array(arrayBuffer);
var printer = require("./js/controller/lib");
printer.printDirect({
data: uint8Array,
printer:'Deskjet_3540',
type: 'PDF',
success: function(id) {
console.log('printed with id ' + id);
},
error: function(err) {
console.error('error on printing: ' + err);
}
})
};
fileReader.readAsArrayBuffer(blob);
这是对我有用的最终代码。打印机接受uint8Array编码格式。
答案 1 :(得分:2)
尝试:
var blob = new Blob([array], {type: "application/pdf"});
var buffer = new Buffer(blob, "binary");
答案 2 :(得分:0)
对我来说,它适用于以下情况:
const buffer=Buffer.from(blob,'binary');
因此,此缓冲区可以通过fs节点程序包存储在Google Cloud Storage和本地磁盘中。
我使用blob文件通过ddp协议(流星)将数据从客户端发送到服务器,因此,当此文件到达服务器时,我将其转换为缓冲区以进行存储。