You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript为变长HTML生成带页面边距的PDF?

解决长HTML转PDF时分页无上下边距的问题

方案1:直接在jsPDF配置中设置全局边距

修改你的jsPDF代码,在html方法的选项里添加margin参数,指定上下左右的边距(单位和初始化时一致,这里是mm):

var doc = new jspdf.jsPDF("p", "mm", "a4");
doc.html(document.body, {
    callback: function (doc) {
        doc.save("output.pdf");
    },
    // 上、右、下、左边距,按需调整数值
    margin: [15, 10, 15, 10]
});

这个参数会让jsPDF渲染每一页时自动给内容留出边距,分页后上下页的内容就不会紧贴。

方案2:用CSS打印样式控制边距

给页面添加打印专用的CSS样式,利用@media print规则设置全局边距,同时可配合手动分页控制:

/* 全局打印样式 */
@media print {
    body {
        /* 设置和PDF纸张匹配的边距,单位mm */
        margin: 15mm 10mm;
        padding: 0;
    }
    /* 可选:给需要手动分页的元素添加标记 */
    .page-break {
        page-break-after: always;
        /* 分页后预留额外间距 */
        margin-bottom: 15mm;
    }
}

这种方式对window.print()、jsPDF、html-to-pdf-js等工具都有效,因为它们都会读取打印样式。

方案3:自定义分页回调(进阶)

如果需要更精细的控制,可利用jsPDF的回调手动调整每页边距:

var doc = new jspdf.jsPDF("p", "mm", "a4");
const pageWidth = doc.internal.pageSize.getWidth();
const pageHeight = doc.internal.pageSize.getHeight();
const margin = 15; // 上下边距

doc.html(document.body, {
    callback: function (doc) {
        doc.save("output.pdf");
    },
    autoPaging: 'text',
    didDrawPage: function (data) {
        // 手动给每页底部添加空白区域
        doc.setFillColor(255,255,255);
        doc.rect(0, pageHeight - margin, pageWidth, margin, 'F');
    }
});

内容的提问来源于stack exchange,提问作者Xavier Patiño

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:03:28