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

使用Flying Saucer生成PDF时前两页设横版出现前置空白页如何解决

问题修复方案

空白页产生核心原因

  • 默认@page规则中额外定义的height/width和A4标准尺寸冲突,导致内容溢出自动触发分页
  • 首个横版页面同时添加了page-break类,Flying Saucer初始化时先加载默认竖版布局,遇到page-break属性会先触发一次空白分页再切换为横版布局,产生多余空白页
  • 自定义横版类额外定义的height/width和@page land的尺寸规则冲突,触发二次分页

修复步骤

1. 清理冗余冲突的CSS规则

删除默认@page和横版类中多余的尺寸定义,页面尺寸统一由@page的size属性控制即可。

2. 调整分页逻辑

首个横版页面不要加page-break类,分页属性仅在需要切换页面的元素上添加。

修正后代码示例

@page {
    margin-top: 3.3cm;
    margin-left: 2cm;
    margin-right: 2cm;
    margin-bottom: 3.3cm;
    size: A4 portrait;
}

@page land { 
    size: A4 landscape;
    margin-top: 3.3cm;
    margin-left: 2cm;
    margin-right: 2cm;
    margin-bottom: 3.3cm;
}
.landscapePage { 
    page: land;
}
/* 如果你原本的page-break类是定义分页的,保留即可 */
.page-break {
    page-break-after: always;
}
<!-- 第一页横版不加page-break,避免开头分页 -->
<div class="landscapePage">
 page 1
</div>

<!-- 第二页横版加page-break,和前一页分隔 -->
<div class="page-break landscapePage">
 page 2
</div>

<!-- 后续竖版页面正常加page-break切换回默认布局即可 -->
<div class="page-break">
  后续竖版页面内容
</div>

额外检查点

如果修改后仍有空白页,检查是否有全局的margin/padding溢出,或者HTML结构开头存在空的文本节点、空元素,Flying Saucer会将空节点识别为内容触发分页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:06:04