【问题标题】:Service side PDFMake basic script returns error服务端 PDFMake 基本脚本返回错误
【发布时间】:2018-11-11 07:28:39
【问题描述】:

我正在开发一个需要使用pdfmakelibrary 生成PDF 的Web 应用程序。 在客户端运行它(用于打印)时我没有问题,但我无法使用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) 这个脚本时返回以下错误:Error: Cannot find module '../src/printer'

对我来说,这个/printer 文件夹应该位于pdfmake 文件夹中,所以我不应该出现这个错误。

我试图通过再次运行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.

有人遇到过这个问题吗?你能帮我吗 ? 谢谢 !

【问题讨论】:

    标签: javascript node.js npm pdf-generation pdfmake


    【解决方案1】:

    printer 的路径指定不正确。 如果您使用npm install 安装软件包,它将被放置在node_modules 文件夹中。您可以阅读更多关于软件包安装的信息here

    所以为了运行您的代码,我将路径更改为:

    var PdfPrinter = require('./node_modules/pdfmake/src/printer');
    

    另外请确保:

    • 您有 fonts 文件夹,并且其中存在 Roboto
    • 您已创建 pdfs 文件夹 (mkdir pdfs)

    其余部分我没有碰,并且能够生成这个文档:

    【讨论】:

    • 谢谢安东尼奥!我也注意到了。我在想节点模块安装在一个且唯一的文件夹中,但我确实明白它们实际上是在您所在的位置创建文件夹。因此,如果我在 /home/ 中进行 npm 安装,它将创建 /home/node_module 并在另一个文件夹中执行相同的操作。现在更清楚了;)
    猜你喜欢
    • 2011-05-16
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    • 1970-01-01
    相关资源
    最近更新 更多