甚至可以在HTML和CSS中进行双面打印的分页功能

Ril*_*ark 8 html css printing formatting

我有快速的打印介质分页功能page-break-after: always.我使用这些来分隔单个批量打印作业中的多个报表.不幸的是,当打印作业是双面的时,分页可能导致打印机在上一个报告的背面开始报告.

有没有办法强制分页到一个偶数页面?或者,或者,要检测某个元素将出现在哪个页码上?

spe*_*ary 7

标准中有CSS功能.你走在正确的轨道上.使用:

<div style="page-break-after: right">
-- your content --
</div>
Run Code Online (Sandbox Code Playgroud)

问题是,目前唯一支持这种情况的主要浏览器是Opera.尽管Opera有自己的挑战问题,但它可能适用于您的情况.

  • 难道你不需要像`style ="page-break-after:right"`那样写它? (6认同)

Nil*_*ils 2

CSS 中没有为此提供内置功能。

一个想法:
您可以尝试将每个报告包装在一个 div 中,然后使用 jquery 之类的东西计算出div 的高度,以确定它是否以奇数页结束。

如果它以奇数页结尾,则在其后的 page-break-after 类中注入一个空的 div,以便它提供到下一页。

编辑
显然,只有当您知道页面在目标打印机上打印的 dpi 时,这才会真正起作用。没有适用于所有情况的神奇答案。

  • 72 dpi(网页)= 595 X 842 像素
  • 300 dpi(打印)= 2480 X 3508 像素(“210mm X 297mm @ 300 dpi”)
  • 600 dpi(打印)= 4960 X 7016 像素

您需要在这里用标准打印机设置进行一些试验,看看什么适合您/您的客户。如果有多个场景,您可以让他们从下拉列表中进行选择。

因此,您可以使用 jquery 检查 div 的像素高度,对照页面的像素高度检查 div 是否在奇数页或偶数页上结束 - 然后如果报表在奇数页上结束则注入分页符。

您还需要预先了解用户是否将使用双面打印 - 因为您只需要为双面打印执行此操作。