如何在 HTML 中插入分页符以便 wkhtmltopdf 解析它?

问题描述 投票:0回答:7

所以基本上我使用 wkhtmltopdf 将动态 HTML 报告转换为 PDF。

该报告具有特定的格式,我被要求使用 HTML 克隆该格式。

我面临的问题是我无法在 html 中模拟 100% 功能分页符,因此 wkhtmltopdf 可以解释它并将内容发送到另一个页面。

我试图避免页面尺寸测量方法等等。

TIA 提供任何帮助。

编辑: 到目前为止,我正在使用

<br>
模拟分页符并且它有效。不过我还需要做一些测试。

html pdf wkhtmltopdf page-break
7个回答
122
投票

指定特定于打印介质类型的 CSS 规则。有许多属性可用于分页。我发现将

page-break-before
属性附加到类中最简单,如下所示。

在 HTML 中:

<p>Page 1, paragraph 1</p>
<p class="new-page">Page 2, paragraph 1</p>
<p>Page 2, paragraph 2</p>

在 CSS 中:

@media print {
  .new-page {
    page-break-before: always;
  }
}

119
投票

当我使用

wkhtmltopdf
时,我使用以下类:

.keep-together {
    page-break-inside: avoid;
}

.break-before {
    page-break-before: always;
}

.break-after {
    page-break-after: always;
}

所以我可以强迫:

  • 特定容器内容不会分布在两页上(如果适合一页)。使用
    keep-together
    类时,如有必要,会在容器之前创建分页符。
  • 在特定容器之前强制分页。
  • 在特定容器之后强制分页。

@media print
不适用于我的
wkhtmltopdf


66
投票
<div style = "display:block; clear:both; page-break-after:always;"></div>

只需将其添加到您的 html 代码中


1
投票

当我使用 wkhtmltopdf 的选项 --print-media-type 时,@media print 对我来说适用于 wkhtmltopdf


0
投票

遇到此问题的人,请尝试将 wkhtmltopdf 降级到版本 0.10.0 rc2,对我有用


0
投票

当使用

wkhtmltopdf
作为
pandoc
的 pdf 引擎时,将选项传递给
wkhtmltopdf
的顺序很重要。

例如,这不起作用,因为

--pdf-engine-opt=toc
出现在
--pdf-engine-opt=--print-media-type
之前:

pandoc --pdf-engine-opt=toc --pdf-engine-opt=--print-media-type --pdf-engine=wkhtmltopdf -o out.pdf out.md

改变它们确实有效:

pandoc --pdf-engine-opt=--print-media-type --pdf-engine-opt=toc --pdf-engine=wkhtmltopdf -o out.pdf out.md

0
投票

如果你的页面内容是动态的,我觉得这个会更合适。

bookjs-eazy

  • 主要解决HTML生成PDF以及分页控制的问题。从此,生成高质量PDF不再困难。

  • 优点:

  1. 只需专注于使用H5构建您的PDF内容,无需担心分页和内容截断,并按照规则自动分页。
  2. 支持预览,所见即所得。支持WEB打印,支持自定义页码/目录/页眉/页脚。
  3. 前端和后端都可以生成PDF,前端可以打印并另存为PDF,后端可以使用chrome headless和wkhtmltopdf命令行PDF生成工具。
  4. Docker 镜像。可以快速构建在线 PDF 的打印生成服务
  5. 兼容主流浏览器和移动终端
© www.soinside.com 2019 - 2024. All rights reserved.