You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS中使用pdfkit-Table生成PDF时Helvetica字体文件找不到错误的解决方法

NextJS中使用pdfkit-Table生成PDF时Helvetica字体文件找不到错误的解决方法

嘿,我之前也碰到过一模一样的问题!这个错误本质是pdfkit在NextJS的服务器运行环境里,找不到默认依赖的Helvetica字体文件——毕竟NextJS的打包机制会改变文件的存放路径,导致pdfkit默认的字体查找路径失效了。给你几个亲测有效的解决办法:

方法一:手动引入本地字体(最可靠)

这个方法彻底绕开默认路径的问题,直接用你自己控制的字体文件:

  1. 先找一份Helvetica字体文件(推荐用.ttf格式,更容易获取),把它放到项目的public/fonts目录下(没有这个目录就新建一个)。
  2. 修改你的代码,创建PDFDocument实例时手动指定字体路径,注意要用绝对路径避免服务器端路径混乱:
const path = require('path');
const PDFDocument = require('pdfkit');
const fs = require('fs');

// 生成PDF的代码部分
const imagePath = path.resolve(process.cwd(), `./test-results/${testCase.title}_${testCase.reportDate}.jpg`);
// 这里手动指定字体路径
const fontPath = path.resolve(process.cwd(), 'public/fonts/Helvetica.ttf');
let doc = new PDFDocument({ font: fontPath });

// 注意你代码里的路径拼写:test-results 和 test_results 不一致,后续可能会出问题哦
doc.pipe(fs.createWriteStream(path.resolve(process.cwd(), `./test_results/REPORT_${testCase.title}_${testCase.reportDate}.pdf`)));

const tableArray = {
    headers: ["Country", "Conversion rate", "Trend"],
    rows: [
        ["Switzerland", "12%", "+1.12%"],
        ["France", "67%", "-0.98%"],
        ["England", "33%", "+4.44%"],
    ],
};
doc.table(tableArray, { width: 300 });
doc.moveDown();
// 后续添加图片的代码...

方法二:修正pdfkit的默认字体查找路径

如果你不想额外添加字体文件,可以尝试手动指定pdfkit查找Helvetica字体的正确路径:

const path = require('path');
const PDFDocument = require('pdfkit');

// 覆盖pdfkit默认的Helvetica字体路径
PDFDocument.prototype._fontFamilies.Helvetica = [
    {
        // 指向node_modules里pdfkit自带的字体文件
        src: path.resolve(process.cwd(), 'node_modules/pdfkit/js/data/Helvetica.afm'),
    },
];

// 之后再正常创建PDF实例即可
let doc = new PDFDocument();

不过要注意,NextJS的打包可能会移动node_modules里的文件,这个方法的稳定性不如第一种,适合快速测试。

方法三:检查并修复依赖

有时候依赖安装不完整也会导致这个问题,先确保所有相关依赖都正确安装:

npm install pdfkit pdfkit-table fs path

另外提醒一下你代码里的小细节:test-results和test_results的拼写不一致(一个是横杠,一个是下划线),后续写文件或者读图片时可能会出现路径找不到的问题,记得统一哦!

备注:内容来源于stack exchange,提问作者Luominous

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:03:00