Я использую библиотеку pdfmake для создания PDF-документов в своем экспресс-приложении узла и хочу, чтобы они были отправлены прямо назад клиенту, чтобы заставить браузер автоматически загружать файл.Обслуживание содержимого в формате PDF в браузере с помощью узла Express с помощью pdfMake
В качестве ориентира я использую следующие примеры для моего прямого промежуточного слоя:
https://gist.github.com/w33ble/38c5e0220d491148de1c https://github.com/bpampuch/pdfmake/issues/489
Я выбрал для отправки буферного ответа обратно, поэтому ключевая часть моего промежуточного слоя выглядит это:
function createPDFDocument(docDefinition, callback) {
var fontDescriptors = {
Roboto: {
normal: './src/server/fonts/Roboto-Regular.ttf',
bold: './src/server/fonts/Roboto-Medium.ttf',
italics: './src/server/fonts/Roboto-Italic.ttf',
bolditalics: './src/server/fonts/Roboto-MediumItalic.ttf'
}
};
var printer = new Printer(fontDescriptors);
var pdfDoc = printer.createPdfKitDocument(docDefinition);
// buffer the output
var chunks = [];
pdfDoc.on('data', function(chunk) {
chunks.push(chunk);
});
pdfDoc.on('end', function() {
var result = Buffer.concat(chunks);
callback(result);
});
pdfDoc.on('error', callback);
// close the stream
pdfDoc.end();
}
В моем угловом приложении я использую службу $ ресурсов и конечная точка определяется следующим образом:
this.resource = $resource('api/document-requests/',
null,
<any>{
'save': {
method: 'POST',
responseType: 'arraybuffer'
}
});
Когда я пытаюсь это, я не получаю любой браузер скачать ноги в, ответ я получаю выглядит следующим образом при поиске в Chrome:
И заголовки ответа следующим образом:
Так что, похоже, я не миллион миль, я искал вокруг и нашел решения, упоминающие о преобразовании в бл ob, но я думаю, что это имеет значение только в том случае, если я возвращаю строку с кодировкой Base64 в документе.
Может кто-нибудь предложить, что может быть моей проблемой здесь?
Благодаря
Я нашел способ на самом деле, но я должен был использовать phantomjs Pdf особенность – akinjide