web-dev-qa-db-ja.com

BlobデータをJavaScriptまたはノードのRawバッファーに変換します

私はプラグインを使用しています 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バッファ」に変換することです。

7
Kamaldeep Singh
           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エンコード形式を受け入れます。

3
Kamaldeep Singh

試してください:

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