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

使用mPDF将HTML导出为PDF时如何实现所有内容无分页仅在单页展示

mPDF实现单页无分页PDF导出操作指南
  • 核心原理:mPDF默认按固定页面尺寸自动触发分页,要实现全内容单页展示,只需关闭自动分页规则,让页面高度自适应内容总高度即可。

操作步骤

1. 初始化mPDF时禁用自动分页

实例化时设置autoPageBreak参数为false,先固定页面宽度,高度后续动态调整:

require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf([
    // 关闭自动分页逻辑
    'autoPageBreak' => false,
    // 固定页面宽度为A4宽度(单位mm),高度暂用默认A4高度后续修改
    'format' => [210, 297],
]);

2. 写入内容并计算实际总高度

先写入完整HTML内容,同时覆盖内容自带的强制分页属性,获取内容渲染后的总高度后调整页面尺寸适配内容:

// 你的待导出HTML内容
$exportHtml = <<<HTML
<!-- 这里放你所有的HTML内容,建议把CSS样式也内嵌到HTML中 -->
<style>
    * {
        /* 覆盖所有元素的强制分页属性,避免内容自带分页规则生效 */
        page-break-after: avoid !important;
        page-break-before: avoid !important;
        page-break-inside: avoid !important;
    }
</style>
<div>
    你的具体内容...
</div>
HTML;

// 写入HTML内容
$mpdf->WriteHTML($exportHtml);

// 计算内容总高度(单位mm)
$totalContentHeight = $mpdf->y + $mpdf->bMargin;

// 调整第一页的尺寸为固定宽度+实际内容高度
$mpdf->page = 1;
$mpdf->PageDimensions[1]['w'] = 210;
$mpdf->PageDimensions[1]['h'] = $totalContentHeight;
$mpdf->ResizePage(1, 210, $totalContentHeight);

3. 输出最终PDF文件

// 直接触发浏览器下载
$mpdf->Output('single-page-output.pdf', \Mpdf\Output\Destination::DOWNLOAD);

// 若需要保存到服务器本地,使用下方写法
// $mpdf->Output('/your/save/path/file.pdf', \Mpdf\Output\Destination::FILE);

注意事项

  • 如果内容高度极大,建议提前调整PHP的内存限制和执行超时时间,避免生成过程中断
  • 上述配置兼容mPDF 8.x及以上稳定版本,低版本建议先升级后使用

内容的提问来源于stack exchange,提问作者Samuel Belo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:15:04