生成PDF文件的方法:使用Node.js连接MySQL数据库
P粉154798196
P粉154798196 2023-08-25 14:23:44
[MySQL讨论组]

我正在尝试使用存储在Mysql数据库中的数据使用Node js、Pdfkit和pdfkit-table生成PDF文件。我需要将数据库中的记录打印到PDF文档中的一个表格中。

下面的代码生成一个空的PDF文件。请帮我解决为什么它不生成带有数据的PDF文件的问题。

这是index.js文件。

var express     = require('express');
 var router      = express.Router();
 var PDFDocument = require('pdfkit');
 var orm         = require('orm');
 var PDFDoc      = require("pdfkit-table"); 

 router.use(orm.express("mysql://root:@localhost:/kirula_fashion", {
 define: function (db, models, next) {
 models.news = db.define("ledger", {
   id          : String,
   date        : String,
   description : String,
   debit       : String,
   credit      : String,
 });
   next();
 }
 }));

 router.get('/', function(req, res, next) {
 var result = req.models.news.find({
 }, function(error, news){
   if(error) throw error;
   res.render('index', { news:news, title: '使用NodeJS生成PDF' 
 });
});
});

router.get('/pdf', function(req, res, next) {
var id  = req.query.id;
const doc = new PDFDocument();
const docTable = new PDFDoc();
var result = req.models.news.find({id: id}, function(error, newspost){
  if(error) throw error;
  else{
    if(newspost.length>0){
      for(var i=0; i<newspost.length;i++){
      var date        = newspost[0]['date'];
      var description = newspost[0]['description'];
      var debit       = newspost[0]['debit'];
      var credit      = newspost[0]['credit'];

      var table = {
        title: "账簿记录",
        subtitle: "2020年5月",
        headers: [
          { "label":"日期", "property":"date", "width":100 },
          { "label":"描述", "property":"description", "width":100 },
          { "label":"借方", "property":"debit", "width":100 },
          { "label":"贷方", "property":"credit", "width":100 }
        ],
        datas: 
          [
            { "date":date, "description":description, "debit":debit, "credit":credit},
            {
                "renderer": "function(value, i, irow){ return value + `(${(1+irow)})`; }"
            }
          ],
        };
        docTable.table( table, { 
          width: 300,
         });   
       }
      }
     }

     var title         = "2020年5月账簿";
     var filename = encodeURIComponent(title) + '.pdf';
     res.setHeader('Content-disposition', 'attachment; filename="' + filename + '"');
     res.setHeader('Content-type', 'application/pdf');
  
  doc.pipe(res);
  doc.end();
 });

});

 module.exports = router;

P粉154798196
P粉154798196

全部回复(1)
P粉924915787

我遇到了与数据选项相同的问题,但是对于行选项,pdfkit-table工作得很好,也许可以将[{..},{...}]映射为[[..],[...]],然后使用行选项

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号