【问题标题】:Losing content when i convert html to pdf with jsPDF当我使用 jsPDF 将 html 转换为 pdf 时丢失内容
【发布时间】:2020-05-30 16:01:53
【问题描述】:

在我的 React 应用程序(客户端)中,我有一个按钮,可以使用带有 jsPDF 的当前 html 内容创建 pdf。我使用 .html() 而不是 .fromHTML() 因为我需要在 pdf 转换中保留 html 样式。 真正的问题是,当我使用 html() 时,页面的行/列结构丢失了很多内容。所以,我需要将我的 html 内容缩放为 pdf,但我不知道该怎么做。

我的代码:

let doc = new jsPDF('p', 'pt', 'a4')
    let source = document.getElementById('pdfContent')

    doc.html( source, {
        callback: function (doc) {
            doc.save();
        }
     });

【问题讨论】:

    标签: javascript html reactjs pdf jspdf


    【解决方案1】:

    如果您的意思是“丢失了很多内容”,如果您的意思是您的内容无法放入 a4 页面,那么您可以使页面更大,例如使用 a3 而不是 a4,或者您可以使用scale 缩小内容html2canvas。可以根据您的页面格式和元素大小计算比例。

    let doc = new jsPDF('p', 'pt', 'a4')
    
    doc.html(document.getElementById('pdfContent'), {
        html2canvas: {
            scale: [yourScaleHere],
        },
        x: [margin],
        y: [margin],
        callback: function (doc) {
            window.open(doc.output('bloburl'));
        }
    });
    

    如果您不需要标准的页面大小,您可以根据您的内容设置页面。例如let pdf = new jsPDF('p', 'pt', [612, 1200]);

    【讨论】:

    • 它可以工作,但现在内容从页面中间开始。我读到它可以修复将 html2canvas 版本降级到 rc1,但它不起作用。
    • 您可以尝试设置 x 和 y 值。代码更新
    • 在这里复活和旧答案。 “可以根据您的页面格式和元素大小计算比例。”你有这样做的例子或公式吗?
    • @WeihuiGuo 谢谢!我会在那里回复你,有一些问题
    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 2011-06-10
    • 1970-01-01
    • 2017-12-25
    相关资源
    最近更新 更多