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

如何使用dompdf生成混合横竖页面尺寸的多页PDF?

解决dompdf实现多页面横竖方向切换的问题

步骤1:修正HTML结构并添加方向控制属性

先修正HTML中page-break标签的语法错误(缺失闭合引号),再给不同页面的容器添加page属性,关联后续定义的CSS页面规则:

<!--First Page-->
<div class="container" style="page: landscape;">
    Page 1
</div>
<div class="page-break"></div>

<!--Second Page-->
<div class="container" style="page: landscape;">
    Page 2
</div>
<div class="page-break"></div>

<!--Third Page-->
<div class="container" style="page: landscape;">
    Page 3
</div>
<div class="page-break"></div>

<!--Fourth Page-->
<div class="container" style="page: portrait;">
    Page 4
</div>
<div class="page-break"></div>

<!--Fifth Page-->
<div class="container" style="page: portrait;">
    Page 5
</div>
<div class="page-break"></div>

<!--Sixth Page-->
<div class="container" style="page: portrait;">
    Page 6
</div>

步骤2:添加CSS规则定义页面方向和分页行为

在HTML的<head>中插入以下CSS,定义横向、纵向两种页面规格,同时确保分页符生效:

<style>
.page-break {
    /* 强制在该元素后触发分页 */
    page-break-after: always;
}

/* 定义横向页面规则 */
@page landscape {
    size: landscape;
    /* 可选:设置页面边距,按需调整 */
    margin: 2cm;
}

/* 定义纵向页面规则 */
@page portrait {
    size: portrait;
    margin: 2cm;
}
</style>

步骤3:调整PHP端dompdf代码

确保使用支持@page命名规则的dompdf版本(建议0.8.0及以上),常规PDF生成代码无需全局设置纸张方向,CSS规则会自动覆盖全局配置:

require_once 'dompdf/autoload.inc.php';

use Dompdf\Dompdf;
use Dompdf\Options;

// 初始化dompdf配置
$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isCssEnabled', true);

$dompdf = new Dompdf($options);

// 加载HTML内容(可从文件读取或直接传入字符串)
$html = file_get_contents('your-html-file.php');

$dompdf->loadHtml($html);
$dompdf->render();

// 输出PDF文件
$dompdf->stream('multi-orientation-document.pdf');

关键注意事项

  • dompdf版本:旧版本可能不支持@page命名和page属性,建议使用最新稳定版。
  • 优先级:CSS中定义的@page规则优先级高于PHP端setPaper()设置的全局纸张方向,无需在PHP中全局指定横竖。
  • 内容适配:横向页面的内容需要适配宽度,避免溢出,可调整容器的宽度样式。

内容的提问来源于stack exchange,提问作者Cihan Yıldız

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:00:26