私はプラグインを使用しています jsPDF PDFを生成し、ローカルファイルシステムに保存します。jsPDF.jsには、pdfデータを生成するコードがいくつかあります。ブロブフォーマット:-
_var blob = new Blob([array], {type: "application/pdf"});
_
さらに、blobデータをローカルファイルシステムに保存します。保存する代わりに、プラグインを使用してPDF)を印刷する必要があります 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);
}
})
_
fs.readFile()
はPDFファイルを読み取り、生のバッファー形式でデータを生成します。
ここで必要なのは、PDFを印刷できるように「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");