服务端 PDFMake 基本脚本 returns 错误
Service side PDFMake basic script returns error
我正在开发一个 Web 应用程序,我需要在该应用程序上使用 pdfmake
库生成 PDF。
当 运行 在客户端(用于打印)设置它时我没有问题,但我无法使用 node.js
使其在服务器端工作(将我的 pdf 保存在服务器上)。
我的服务器运行正在 linux
上运行,node.js
和 npm
已正确安装。
我还使用 sudo npm i pdfmake
安装了 pdfmake
包。该模块似乎已正确安装,因为它在使用 npm ls
时被列出。
然后我尝试 运行 一个简单的脚本来生成基本的 pdf:
var pdfmake = require('pdfmake');
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('../src/printer');
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 pdfDoc = printer.createPdfKitDocument(docDefinition);
pdfDoc.pipe(fs.createWriteStream('pdfs/basics.pdf'));
pdfDoc.end();
执行(sudo node pdftest.js
)此脚本时return出现以下错误:Error: Cannot find module '../src/printer'
对我来说,这个 /printer
文件夹应该位于 pdfmake
文件夹中,所以我不应该出现这个错误。
我试图通过 运行ning 再次 sudo npm i pdfmake
重新安装软件包,但它没有任何改变。
此外,这是我安装时得到的结果:
/home/odroid
`-- pdfmake@0.1.36
`-- linebreak@0.3.0
`-- brfs@1.6.1
`-- static-module@2.2.5
`-- falafel@2.1.0
`-- acorn@5.6.1
npm WARN enoent ENOENT: no such file or directory, open '/home/odroid/package.json'
npm WARN odroid No description
npm WARN odroid No repository field.
npm WARN odroid No README data
npm WARN odroid No license field.
有人遇到过这个问题吗?你能帮我吗 ?
谢谢 !
printer
的路径指定不正确。
如果您使用 npm install
安装软件包,它将被放置在 node_modules
文件夹中。您可以阅读有关包安装的更多信息 here.
因此,为了 运行 您的代码,我已将路径更改为:
var PdfPrinter = require('./node_modules/pdfmake/src/printer');
另外请确认:
- 您有
fonts
文件夹,Roboto 存在于其中
- 您已经创建了 pdfs 文件夹(
mkdir pdfs
)
我没有触及其余部分并能够生成此文档:
我正在开发一个 Web 应用程序,我需要在该应用程序上使用 pdfmake
库生成 PDF。
当 运行 在客户端(用于打印)设置它时我没有问题,但我无法使用 node.js
使其在服务器端工作(将我的 pdf 保存在服务器上)。
我的服务器运行正在 linux
上运行,node.js
和 npm
已正确安装。
我还使用 sudo npm i pdfmake
安装了 pdfmake
包。该模块似乎已正确安装,因为它在使用 npm ls
时被列出。
然后我尝试 运行 一个简单的脚本来生成基本的 pdf:
var pdfmake = require('pdfmake');
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('../src/printer');
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 pdfDoc = printer.createPdfKitDocument(docDefinition);
pdfDoc.pipe(fs.createWriteStream('pdfs/basics.pdf'));
pdfDoc.end();
执行(sudo node pdftest.js
)此脚本时return出现以下错误:Error: Cannot find module '../src/printer'
对我来说,这个 /printer
文件夹应该位于 pdfmake
文件夹中,所以我不应该出现这个错误。
我试图通过 运行ning 再次 sudo npm i pdfmake
重新安装软件包,但它没有任何改变。
此外,这是我安装时得到的结果:
/home/odroid
`-- pdfmake@0.1.36
`-- linebreak@0.3.0
`-- brfs@1.6.1
`-- static-module@2.2.5
`-- falafel@2.1.0
`-- acorn@5.6.1
npm WARN enoent ENOENT: no such file or directory, open '/home/odroid/package.json'
npm WARN odroid No description
npm WARN odroid No repository field.
npm WARN odroid No README data
npm WARN odroid No license field.
有人遇到过这个问题吗?你能帮我吗 ? 谢谢 !
printer
的路径指定不正确。
如果您使用 npm install
安装软件包,它将被放置在 node_modules
文件夹中。您可以阅读有关包安装的更多信息 here.
因此,为了 运行 您的代码,我已将路径更改为:
var PdfPrinter = require('./node_modules/pdfmake/src/printer');
另外请确认:
- 您有
fonts
文件夹,Roboto 存在于其中 - 您已经创建了 pdfs 文件夹(
mkdir pdfs
)
我没有触及其余部分并能够生成此文档: