node.js html-pdf get“spawn ENOTDIR”error when call pdfToFile

a0zr77ik  于 2023-03-22  发布在  Node.js
关注(0)|答案(3)|浏览(155)

我使用html-pdf在电子生成pdf从html。
当我用“npm run start”测试时,它工作了。我可以得到pdf。
但是当我用electron-builder把电子应用打包成.dmg文件时,
我得到了“spawn ENOTDIR”错误时,调用pdf.create()

var pdf = require('html-pdf');
var options = { format: 'Letter' };
//resultFilePath = /Users/myname/Documents/result.pdf
pdf.create(htmlContent, options).toFile(resultFilePath, function(err, res) 
{
}

我现在不知道。有人有同样的问题吗?
任何帮助都将不胜感激。

s71maibg

s71maibg1#

html-pdf在打包后可能无法找到幻影二进制文件。
尝试通过html-pdf选项显式设置phantomJS二进制位置。

> var pdf = require('html-pdf'); 
> var options = { format: 'Letter', phantomPath: '/path/to/phantomJSbinary' };
> //resultFilePath = /Users/myname/Documents/result.pdf
> pdf.create(htmlContent, options).toFile(resultFilePath, function(err,
> res)  { }

您可能还需要设置options.script以指向html-pdf模块中的pdf_a4_portrait.js副本。
其他人也遇到过类似的问题。参见https://discuss.atom.io/t/asar-limitations-on-node-api-spawn-a-child/28235/2

plicqrtu

plicqrtu2#

const pdf = require('html-pdf');    

npm i witch phantomjs-prebuilt

然后在options json对象中

const options = {
    phantomPath: `${phantomPath}`
};

之后,使用如下选项对象创建PDF:

pdf.create(html, options).toFile(`${fileName}.pdf`, function (err, res) {
                if (err) return console.log(err);
                console.log(res);
            });

使用phantomPath像这样,希望这工作。它为我工作。

t30tvxxf

t30tvxxf3#

对于任何人遇到问题时,在电子打印。
在一个可见的窗口中打开打印内容是很好的解决方案,我在How to print a DIV in ElectronJS中遵循了zen的答案
适用于Windows和MacOS。

相关问题