【问题标题】:Convert HTML to PDF using npm html-pdf使用 npm html-pdf 将 HTML 转换为 PDF
【发布时间】:2021-10-13 16:36:42
【问题描述】:

我正在尝试使用 npm html-pdf 将 HTML 文件转换为 PDF,但转换后的 PDF 不是 HTML(样式错误)。谁能告诉我我做错了什么?

var pdf = require('html-pdf');
var html = fs.readFileSync('./example.html', 'utf8');

    pdf.create(html, options).toFile(folderName + '/' + fileName, function (err, res) { // if the file doesnt exist it will be created
    if (err) return console.log(err);

    console.log(res);
  });

【问题讨论】:

  • 您需要更具体地了解您的问题,并可能添加您的 example.html 的相关部分。既然如此,我们也帮不上什么忙。
  • 如果使用html-pdf命令行从example.html生成pdf,样式问题还存在吗?能发一下example.html的相关内容吗?
  • 从 HTML 生成的 PDF 文件看起来不像 HTML,文本太大,没有图像。

标签: node.js npm html-pdf


【解决方案1】:

我已经实现了这一点,但它是一种将 html 转换为 pdf 的方法略有不同。在下面的代码中,我使用jade(现在称为pug)来允许这个pdf在结构上不会改变的情况下是动态的,只是值。换句话说,它是一个可重用的模板。另外,我是异步执行此操作的,这是您遇到问题的潜在原因。您编写同步代码是否有特定原因?

在您的代码中,有几个变量您没有显示定义,所以我看不出这是否是问题所在。如果您包含您的代码,我将能够为您提供更多帮助。我希望我的代码在此期间对您有所帮助。

let fs = require('fs');
let path = require('path');
let jade = require('jade');
let pdf = require('html-pdf');
let filepath = path.resolve(__dirname, '../views/example.jade');
let templateVariables = {}; // If you have any to pass in
fs.readFile(filepath, 'utf8', function(err, data) {
    if (err) throw err;
    let fn = jade.compile(data);
    let html = fn(templateVariables);
    let options = {
        pageSize: 'Letter',
        marginTop: '0.5in',
        marginLeft: '0.25in',
        marginRight: '1.0in',
        marginBottom: '0.5in'
    };
    if (html) {
        pdf.create(html, options).toFile('./example.pdf', function(err, res){
            if (err) {
                console.log(err);
                cb(err);
            }
            if (res) {
                console.log('pdf res ', res);
            }
        });
    }
});

【讨论】:

  • OP 使用了fs.readFileSync,因为在html-pdf 的官方“代码示例”文档中,它是fs.readFileSync...
【解决方案2】:

不支持 html-pdf 中的 css3。所以像display :flex;这样的元素在html-pdf中不起作用所以使用像float : left这样的旧样式样式等..

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 2010-12-31
    • 2016-12-01
    • 1970-01-01
    • 2020-09-04
    • 2017-12-19
    • 2014-03-19
    • 2022-03-07
    相关资源
    最近更新 更多