使用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"
相关推荐
wtsolutions6 小时前
QMT 知识库 XtQuant知识库 使用文档 pdf
pdf·知识库·文档·qmt
海盗12349 小时前
C#中PDF操作-QuestPDF介绍和使用教程
pdf·c#
半月夏微凉9 小时前
win11下不能预览pdf的问题解决方法
windows·pdf
猫猫不是喵喵.10 小时前
vue2技术栈将表单内容转为PDF并下载
pdf
庖丁AI1 天前
合同比对工具怎么选?Word、PDF 和扫描件差异对比思路
pdf·word
包子源1 天前
PDF 转 Word/Excel 全链路实战:Next.js + 阿里云文档智能
pdf·word·excel
敲代码的鱼哇1 天前
PDF 预览与签名批注写回 支持安卓 iOS 鸿蒙 UTS插件
android·ios·pdf·鸿蒙·harmony
开开心心_Every2 天前
能把网页藏在Word里的实用摸鱼工具
人工智能·科技·目标跟踪·pdf·计算机外设·语音识别·mllib
Raink老师2 天前
【AI面试临阵磨枪-64】设计多模态(文本 + 图片 + PDF)AI 助手系统
人工智能·pdf