首页 > 解决方案 > 服务端 PDFMake 基本脚本返回错误

问题描述

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

我的服务器正在运行linux并且已正确安装。我还使用. 该模块似乎已正确安装,因为它在使用.node.jsnpmpdfmakesudo npm i pdfmakenpm 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.

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

标签: javascriptnode.jsnpmpdf-generationpdfmake

解决方案


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

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

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

另请确保:

  • 你有fonts文件夹,里面存在 Roboto
  • 您已创建 pdfs 文件夹 ( mkdir pdfs)

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

在此处输入图像描述


推荐阅读