服务端 PDFMake 基本脚本 returns 错误

Service side PDFMake basic script returns error

我正在开发一个 Web 应用程序,我需要在该应用程序上使用 pdfmake 库生成 PDF。 当 运行 在客户端(用于打印)设置它时我没有问题,但我无法使用 node.js 使其在服务器端工作(将我的 pdf 保存在服务器上)。

我的服务器运行正在 linux 上运行,node.jsnpm 已正确安装。 我还使用 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)

我没有触及其余部分并能够生成此文档: