使用Thymeleaf导出PDF,页眉插入图片与内容重叠?

CSS 打印分页功能

需求:打印 在第一页的内容被挤到第二页的时候,又想每一页页头都有相同的样式,使用页眉。

问题:第二页的内容与页眉重叠了?

查各路找出的原因:header 页眉不占空间

解决:不需要写死内容的高度,需要把页眉空间设出来,内容从哪里开始设好

  1. Thymeleaf设置页头、页尾
html 复制代码
<style>    
    @page {
        @top-center {
            content: element(header);
        }
    }

    .header {
        position: running(header);
    }
</style>

在上面的示例中,@page指令用于定义页面布局,@top-center选择器用于指定页眉的位置。content: element(header);表示将名为header的元素内容作为页眉插入到@top-center位置。.header类用于定义页眉的样式,并使用position: running(header);将其与@top-center位置关联起来。

  1. 设置高度
html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PDF with Fixed Header and Footer</title>
<style>
  /* 页面中的内容 */
  .content {
    margin-top: 100px; /* 留出页眉空间 */
    margin-bottom: 100px; /* 留出页脚空间 */
  }

  /* 固定页眉 */
  @page {
    margin-top: 100px; /* 页眉高度 */
    margin-bottom: 100px; /* 页脚高度 */
  }
  .header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100px; /* 页眉高度 */
    background-color: #ccc;
    text-align: center;
    line-height: 100px; /* 垂直居中 */
  }

  /* 固定页脚 */
  .footer {
    position: fixed;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100px; /* 页脚高度 */
    background-color: #ccc;
    text-align: center;
    line-height: 100px; /* 垂直居中 */
  }
</style>
</head>
<body>
  <!-- 固定页眉 -->
  <div class="header">
    Header
  </div>

  <!-- 页面中的内容 -->
  <div class="content">
    <h1>Main Content</h1>
    <p>This is the main content of the page.</p>
    <!-- 这里可以放更多内容 -->
  </div>

  <!-- 固定页脚 -->
  <div class="footer">
    Footer
  </div>
</body>
</html>

@media print

@Page

都是专用于页面设计

页码和页面显示只能用JS才能实现?no no no

用纯CSS也能实现

页码实现

html 复制代码
<div class="footer"><span id="pagenumber"></span>
<span id="pagecount"></span></div>


#pagenumber:before {
            content: counter(page);
        }

#pagecount:before {
            content: counter(pages);
}


        @page {
            @bottom-left {
                content: element(footer);
                vertical-align: top;
                padding-top: 0px;
            }

footer {
            display: block;
            margin-top: 0.5cm;
            position: running(footer);
        }

避免分割元素:使用 page-break-inside 属性来避免将元素分割到不同的页面上。 【放在要分割的元素上】

控制分页位置:page-break-after: auto;

html 复制代码
.details-box{
    position: absolute;
    margin-top: 21px;
    padding-top: 1px;
    page-break-after: auto;
}

参考:

复制代码
关于CSS 打印你应该知道的样式配置 - 掘金 (juejin.cn)

有空格就会另起一行

html 复制代码
white-space: nowrap;
white-space:pre-line"
相关推荐
Sour34 分钟前
【无标题】aPPT 翻译后保留版式的流程:文本框、图片、母版和动画检查
pdf·powerpoint
无心水2 小时前
27、私有化部署|PaddleOCR-Server 本地OCR服务搭建
金融·pdf·ocr·pdf解析·pdf抽取·pdf提取·ocr服务
开开心心就好7 小时前
解决截图被拦截黑屏问题的免费小工具
安全·智能手机·flink·kafka·pdf·音视频·1024程序员节
软件工程小施同学8 小时前
CCF A区块链论文分享-NDSS 2026(2)-CtPhishCapture:揭露针对加密货币钱包的基于凭证窃取的网络钓鱼诈骗(附pdf)
网络·pdf·区块链
2601_961845158 小时前
2026法考资料pdf|电子版|资料已整理
开发语言·前端框架·pdf·c#·xhtml·csrf·view design
qq_422152578 小时前
PDF 解密工具怎么选?2026 年文档密码移除方案与注意事项
java·前端·pdf
Sour8 小时前
Word 文档翻译后保留格式的检查清单:标题、表格、图片、目录和批注
pdf·word·办公软件·office·文档翻译
Sour9 小时前
扫描版 PDF 翻译流程:OCR 识别、译文校对和排版保留
pdf·ocr
zyplayer-doc10 小时前
继飞书之后,又一款知识库推出了开源 Agent-Native CLI 工具
人工智能·pdf·编辑器·飞书·开源软件
辣香牛肉面10 小时前
Windows PDF转换工具箱
windows·pdf