pdfmake возвращает пустую страницу для fs.createWriteStream - PullRequest
0 голосов
/ 28 февраля 2019

с использованием node 8.11 и pdfmake 0.1.53 и pm2.pdfmake дает смешанный ответ, но почти терпит неудачу (пустая страница) и успешно (с содержанием) случайно.Это ошибка временного хранения?пробовал и с другим именем, но получал пустую страницу, после того, как закрывающаяся и открытая система получала правильное первое время, а затем получал пустые страницы.

примечание: прямая загрузка не всегда терпит неудачу.наконец, прикрепил образец.

код образца:

module.exports = {
    generateReport: function(req, res){ 

        var fonts = {
            Roboto: {
                normal: 'node_modules/fonts/Roboto-Regular.ttf',
                bold: 'node_modules/fonts/Roboto-Medium.ttf',
                italics: 'node_modules/fonts/Roboto-Italic.ttf',
                bolditalics: 'node_modeules/fonts/Roboto-MediumItalic.ttf'
            }
        };

        var PdfPrinter = require('pdfmake');
        var printer = new PdfPrinter(fonts);
        var fs = require('fs');

        var docDefinition = {
            content: [
                'First paragraph',
                'Another paragraph, this time a little bit longer to make sure, this line will be divided into at least two lines'
            ]
        };
        var PdfPrinter = printer.createPdfKitDocument(docDefinition);
        PdfPrinter.pipe(fs.createWriteStream('public/pdfs/document.pdf'));
        PdfPrinter.end();

    }
}

app.js

const express = require('express');
var path = require('path');
var app = express();
app.use('/', express.static(path.join(__dirname, 'public')));
app.use('/api', require('./routes/api'));
app.listen('3003', 'localhost');
console.log('Server started at port 3003');

api.js

const express = require('express');

const ctrl = require('../controllers/ctrl');

var router = express.Router();

router.route('/generate-report').get(ctrl.generateReport);

module.exports = router;

Прямая загрузка всегда с контентом.

пример кода для прямой загрузки:

module.exports = {
        generateReportAndDownload: function(req, res){

            var fonts = {
                Roboto: {
                    normal: 'node_modules/fonts/Roboto-Regular.ttf',
                    bold: 'node_modules/fonts/Roboto-Medium.ttf',
                    italics: 'node_modules/fonts/Roboto-Italic.ttf',
                    bolditalics: 'node_modeules/fonts/Roboto-MediumItalic.ttf'
                }
            };
            var PdfPrinter = require('pdfmake');
            var printer = new PdfPrinter(fonts);
            var doc = printer.createPdfKitDocument({
                info: {
                    title: 'PDF with External Image',
                    author: 'Matt Hagemann',
                    subject: 'PDF with External Image',
                },
                content: ['First paragraph',
                'Another paragraph, this time a little bit longer to make sure'],
                defaultStyle: {
                    fontSize: 11,
                    font: 'Roboto', // The font name was defined above.
                    lineHeight: 1.2,
                }
            })
            doc.end()
            res.setHeader('Content-type', 'application/pdf')
            res.setHeader('Content-disposition', 'inline; filename="Example.pdf"')
            doc.pipe(res)
        }
}
...