2015-08-21 2 views
1

Я пытаюсь перенести pdfkit из png-js в pngsj2, потому что png-js не поддерживает чересстрочный png. Мне нужно загрузить PNG-файл синхронно. Я пытаюсь сделать это следующим образом:bufferjs buffer buffer synchronized .pipe()

var fs = require('fs'), 
    PNG = require('pngjs2').PNG; 
var stream = require('stream'); 
var bufferStream = new stream.PassThrough(); 
var buf = fs.readFileSync('./logs/rid12.png'); 
bufferStream.end(buf); 
var png = null; 
bufferStream.pipe(new PNG()) 
    .on('parsed', function() { 
     console.log("here"); 
     png = this; 
    }); 

console.log("there",png); 

«там» происходит до «здесь», поэтому png имеет значение null. Возможно ли подключить буфер inmemory к парсеру PNG, чтобы мне не приходилось создавать обратную архитектуру?

ответ

0

Невозможно сделать синхронный асинхронный метод.

Есть библиотеки, такие как https://github.com/scriby/asyncblock, которые могут подделать его.

asyncblock(function(flow) { 

    var png = null 
    flow.sync(bufferStream.pipe(new PNG()) 
     .on('parsed', function() { 
     console.log("here"); 
     png = this; 
     flow.callback() 
     }) 
    ); 

    // png not null 
}); 
+0

Я так не считаю. Вероятно, можно назвать какой-то метод (новый PNG()), но я не знаю, какой из них. –