Rails:WickedPDF:分页符

时间:2011-04-27 15:52:57

标签: ruby-on-rails pdf page-break

在我的Ruby(1.9.2)Rails(3.0.x)中,我想使用wicked_pdf将网页呈现为PDF,我想控制分页的位置。我控制分页符的CSS代码如下:

<style>
  @media print
  {
    h1 {page-break-before:always}
  }
</style>

但是,当我使用wicked_pdf呈现页面时,它不会将文档分成两页。还有其他一些我必须做的就是用wicked_pdf来分页?

6 个答案:

答案 0 :(得分:58)

出于某种原因,“@ media print”并没有这么做。我跟你一起去了

.page-break { display:block; clear:both; page-break-after:always; }

对于CSS规则,然后我将以下内容粘贴在我的页面中以进行分页:

<div class="page-break"></div>

这才有效。

答案 1 :(得分:10)

试过Jay的解决方案,但无法让它工作(可能与其他css发生冲突)

我得到了它的工作:

<p style='page-break-after:always;'></p>

答案 2 :(得分:4)

我遇到了同样的问题,我发现了一些可能有用的东西。这是我的分页CSS代码:

.page-break {
  display: block;
  clear: both;
  page-break-after: always;
}

由于两个原因,这不起作用:

<强>予。在其中一个SASS导入的文件中,我有这行代码:

html, body
  overflow-x: hidden !important

<强> II。另一个问题是bootstrap

@import "bootstrap"

看起来好像是因为float: left

.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}

分页符不再有效。因此,只需在之后添加导入bootstrap。

.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: initial !important;
}

答案 3 :(得分:2)

如果您使用外部样式表,请确保样式表链接标记包含media ='print'或media ='all':

<%= stylesheet_link_tag 'retailers_pdf',media: 'all' %>

<%= stylesheet_link_tag 'retailers_pdf',media: 'print' %>

否则wicked_pdf将无法接收它。

另请注意,如果您位于带有边框的表格或div的中间,则分页符属性将不起作用。在这种情况下,是时候打破jQuery并开始分裂。这个答案:https://stackoverflow.com/a/13394466/2016616有一个很好的位置测量片段。我正在研究干净且可重复的表格分割代​​码,并在完成后发布它。

答案 4 :(得分:2)

这些解决方案都不适合我。我确实找到了一个适用于宝石问题的许多人的解决方案 - https://github.com/wkhtmltopdf/wkhtmltopdf/issues/1524

您想在需要分页符的元素上添加CSS。就我而言,它是表行,所以我补充说:

tr {
 page-break-inside: avoid;
}

答案 5 :(得分:1)

我有同样的问题,最终为我工作的是确保我的元素

page-break: always;

位于文档的根目录上,似乎当它嵌套在其他元素内部时,特别是高度分配的元素时,声明会被忽略。

希望这有助于某人。