我有一个使用 html-pdf 包的简单项目,我想用以下代码制作一个简单的 pdf 文件:
...
pdf.create(html).toStream(function(err, stream){
if (err) reject(err) ;
else stream.pipe(fs.createWriteStream(path.join(__dirname, '../../../assets/docs/idv_docs/')+data.link+'.pdf'));
});
...
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
Error: html-pdf: Received the exit code '1'
cc-server_1 | Auto configuration failed
cc-server_1 | 139666354437760:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libssl_conf.so): libssl_conf.so: cannot open shared object file: No such file or directory
cc-server_1 | 139666354437760:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
cc-server_1 | 139666354437760:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=ssl_conf, path=ssl_conf
cc-server_1 | 139666354437760:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=ssl_conf
cc-server_1 |
cc-server_1 | …
Run Code Online (Sandbox Code Playgroud) 我有 EC2 实例在 aws 中运行。当我部署到服务器后。一切正常,直到我检查 html-pdf。每次我点击 api 创建 pdf 时,我都会检查日志,结果是:
我已经尝试使用npm uninstall html-pdf卸载 html pdf,然后使用npm install html-pdf再次安装
我已经尝试使用npm link phantomjs-prebuilt但仍然有相同的结果。当我检查当地一切工作正常时,是否有人遇到这样的相同问题并且已经解决?谢谢!
*更新:
我已经尝试全局安装 phantomjs,并使用以下命令设置幻像路径:
"phantomPath":"../../../../../usr/local/lib/node_modules/phantomjs-prebuilt/bin/phantomjs"
Run Code Online (Sandbox Code Playgroud)
我从节点模块获得的路径:
这是我的代码:
createOwn: async function (req, res, next) {
try {
const owner = await getOwnership(req.params.id);
const name = await Date.now();
ejs.renderFile(path.join(__dirname, './template', "own.template.ejs"), { own: owner, moment: moment, }, (err, data) => {
if (err) {
console.log(err);
return res.status(500).json({ status: "error", data: err });
} else {
let options = …
Run Code Online (Sandbox Code Playgroud) 我试图在Ubuntu 16.04上使用node-html-pdf(https://github.com/marcbachmann/node-html-pdf)节点模块,并已开始使用给定的businesscard示例.
很遗憾,我无法生成此PDF.
首先,我在本地安装了模块.
然后我将businesscard.html和image.png复制到我的项目中,并尝试执行以下代码而不进行任何更改:
var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('./test/businesscard.html', 'utf8');
var options = { format: 'Letter' };
pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
if (err) return console.log(err);
console.log(res); // { filename: '/app/businesscard.pdf' }
});
Run Code Online (Sandbox Code Playgroud)
结果是一个带有2个黑页的PDF(ok),带有正确的文本,但格式要大得多,字体不对,我无法在其中获取图像.
看起来像一些基本配置,缺少路径或类似...
有线索吗?
我编写了一个 NodeJS 类,它应该从 html 字符串中创建一个 PDF 文件。该类部署在 AWS Lambda 上。它基于 html-pdf ( https://www.npmjs.com/package/html-pdf )。
const {readFileSync} = require('fs');
const pdf = require('html-pdf');
process.env['PATH'] = process.env['PATH'] + ':' + process.env['LAMBDA_TASK_ROOT'];
const options = { format: 'Letter' };
const createPDF = async (fileName, data) => {
let text = readFileSync('./templates/' + fileName + '.html','utf8');
data.forEach(element => {
text = text.replace("{{{" + element[0] + "}}}",element[1]);
});
console.log(text);
return new Promise(function(resolve, reject) {
pdf.create(text, options).toBuffer(function (err, buffer) {
if (!err)
resolve(buffer);
else
console.log(buffer)
}); …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将 html 模板代码中的 pdf 放在一起。我遇到的问题是我尝试过的 html-pdf 转换器没有正确格式化 css,我猜它们还与 css flex-box 不兼容。
我研究了两种方法:
在 Node.js 上使用 html-pdf 包
在python中使用jinja2、pdfkit和wkhtmltopdf
这两种方法都允许我对 html 进行模板化并从 html 动态构建 pdf,但 css 转换不能 100% 工作(css flex-box 失败)。
关于可以处理css flex-box的html到pdf转换器的任何想法?或者,有没有人知道上述方法的任何修复程序,以便他们可以处理 css flex-box?只想从 css flex-box 样式的 html 制作 pdf。
谢谢!
我在我的 lambda 函数中使用“html-pdf”模块。下面是我的代码
await pdf.create(html, options).toStream(async function (err, stream) {
if(err) {
return err;
}
let fileName = NAME_OF_FILE;
let key = KEY;
let data = await s3Upload(key, stream) // function to upload to s3
});
Run Code Online (Sandbox Code Playgroud)
代码在本地似乎运行良好。但是在 lambda 中我收到了这个错误
错误:html-pdf:收到退出代码“127”/var/task/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs:加载共享库时出错:libfontconfig.so.1:无法打开共享对象文件:无此文件或目录
有任何想法吗 ?提前致谢!
我实际上使用 Node js 和html-pdf lib 在服务器上生成 pdf,并将其作为 blob 返回给客户端。当我在本地计算机上执行此操作时,一切都很好,但是当我将其上传到服务器并进行测试时。生产时文本大小会增加。
我创建了一个将对象作为参数的函数:
async function generatePDF(object) {
let htmlContent = `
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
body,
html {
font-family: arial, sans-serif;
color: rgb(46, 46, 46);
}
</style>
</head>
<body>
<br />
Date: ${object.todayDate}
<div style="margin-top: 60px">
<h3 style="border-top: 1px solid black">Dr. ${object.name} ${object.firstname}</h3>
</div>
</html>
`;
Run Code Online (Sandbox Code Playgroud)
下面是从创建的 HTML 文件生成 PDF 的代码:
let sideMargin = "1.5cm";
var options = {
format: "A5",
border: {
top: "1.5cm", // default is 0, …
Run Code Online (Sandbox Code Playgroud) node.js ×6
html-pdf ×4
html ×2
pdf ×2
amazon-ec2 ×1
aws-lambda ×1
css ×1
express ×1
javascript ×1
lambda ×1
pdfkit ×1
phantomjs ×1