gpt4 book ai didi

pdfmake - 如何使用 PDFMake 和 vfs_fonts 在 Node.js 上创建 PDF?

转载 作者:行者123 更新时间:2023-12-03 16:15:48 25 4
gpt4 key购买 nike

看起来像这样 question已经asked不少times使用旧版本的 PDFMake,但尚未使用似乎是最新的目录结构进行更新。另外,将字体复制到根“字体”文件夹中并不是很好。

我究竟如何获得在 Node.js 上运行的服务器端版本的 PDFMake(“pdfmake”:“^0.1.31”)使用包含的 vfs_fonts.js 文件?

在命令行上使用 npm 安装

npm install pdfmake fs --save

使用以下命令启动 Node.js 应用程序 index.js:
var fonts = {
Roboto: {
normal: 'fonts/Roboto-Regular.ttf',
bold: 'fonts/Roboto-Medium.ttf',
italics: 'fonts/Roboto-Italic.ttf',
bolditalics: 'fonts/Roboto-MediumItalic.ttf'
}
};

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

var dd = {
content: [
'First paragraph',
'Another paragraph'
]
}
var pdfDoc = printer.createPdfKitDocument(dd);
pdfDoc.pipe(fs.createWriteStream('basics.pdf')).on('finish',function(){
//success
});
pdfDoc.end();

点击运行和bam:
/usr/local/bin/node index.js
fs.js:640
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT: no such file or directory, open 'fonts/Roboto-Regular.ttf'
at Error (native)
at Object.fs.openSync (fs.js:640:18)

问题似乎在于字体/Roboto... 文件的位置。在客户端,这可以通过包含 vfs_fonts.js 文件来解决。服务器端,我不确定。没有 fonts folder or .ttf files包括。 meteor 框架 example我发现似乎不适用。

有任何想法吗?所有官方 examples引用 src/fonts 文件夹。对于 npm install server 模块来说,这不是一个好方法。

最佳答案

这就是我为解决这个问题所做的。

下载“roboto-font”:“0.1.0”模块并在Roboto对象中分配该字体的路径,它工作正常。

let fonts = {
Roboto: {
normal: 'node_modules/roboto-font/fonts/Roboto/roboto-regular-webfont.ttf',
bold: 'node_modules/roboto-font/fonts/Roboto/roboto-bold-webfont.ttf',
italics: 'node_modules/roboto-font/fonts/Roboto/roboto-italic-webfont.ttf',
bolditalics: 'node_modules/roboto-font/fonts/Roboto/roboto-bolditalic-webfont.ttf'
}
};
let printer = new pdfMake(fonts);
let pdfDoc = printer.createPdfKitDocument(pdfData);
pdfDoc.pipe(fs.createWriteStream(reportName));
pdfDoc.end();

关于pdfmake - 如何使用 PDFMake 和 vfs_fonts 在 Node.js 上创建 PDF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45196528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com