【问题标题】:Generate a report in PDF format in nodes在节点中生成 PDF 格式的报告
【发布时间】:2018-07-19 20:44:47
【问题描述】:

我正在生成一个表格(数据网格)报告,该报告位于节点的文本文件中。我想以 PDF 格式生成相同的报告,以便报告不可编辑。我在互联网上搜索,但只有从 HTML 中找到的方法,但我不想使用 HTML。

这可能吗?如果是那怎么办?

【问题讨论】:

    标签: node.js pdf pdf-generation


    【解决方案1】:

    我相信你可以使用 PDFKit:http://pdfkit.org/ 来做到这一点,这是一个简单的例子,我现在已经将行设为全局。

    var content = [];
    for(var i = 0; i < 30; i++) {
        content.push('Content line ' + i);
    }
    
    lines =[]; lines = Array.from(Array(content.length).keys()).map((n) => content[n]);  
    
    var fs = require('fs');
    var PDFDocument = require('pdfkit');
    
    function printLinesToPDF() {
    
        return new Promise((resolve) => {
    
            var pdf = new PDFDocument({
              size: 'A4', 
              info: {
                Title: 'Example file',
                Author: 'Me',
              }
            });
    
            console.log('Printing %d line(s) to PDF', lines.length);
            lines.forEach((line) => pdf.text(line));
    
            var stream = fs.createWriteStream('./example.pdf');
            pdf.pipe(stream);
    
            pdf.flushPages();
            pdf.end();
    
            stream.on('finish', function() {
                resolve();
            });
    
        });
    }
    
    printLinesToPDF().then(() => {
        console.log('All done');
    });
    

    【讨论】:

    • 如果我需要写多行(比如100行)怎么办?
    • 我已经更新了答案,我猜你会把它传递给像'printLinesToPDF'这样的函数
    • 我只需要用动态长度将'lines'变量设为全局变量,并用报表的记录填充这个数组,如下行=[]; lines = Array.from(Array(30).keys()).map((a) => content);但它不工作。你能帮我解决这个问题吗?
    • 当然..我去看看!
    • 您的代码现在对我有用。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多