在JavaScript或节点中将Blob数据转换为Raw缓冲区

我正在使用生成PDF并将其保存到本地文件系统的插件jsPDF 。 现在在jsPDF.js中,有一些代码可以生成blob格式的pdf数据:

var blob = new Blob([array], {type: "application/pdf"}); 

并进一步将blob数据保存到本地文件系统。 现在,而不是保存我需要使用插件节点打印机打印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。

       

网上收集的解决方案 "在JavaScript或节点中将Blob数据转换为Raw缓冲区"

  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编码格式。

尝试:

 var blob = new Blob([array], {type: "application/pdf"}); var buffer = new Buffer(blob, "binary");