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

我的服务器在linux上运行,并且node.jsnpm已正确安装。
我还使用pdfmake安装了sudo npm i 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
`-- [email protected]
  `-- [email protected]
    `-- [email protected]
      `-- [email protected]
        `-- [email protected]
          `-- [email protected]

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


我没有碰其余的,并且能够生成此文档:

javascript - 服务端PDFMake基本脚本返回错误-LMLPHP

关于javascript - 服务端PDFMake基本脚本返回错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50638610/

10-10 15:25