Prawn中的转发器PDF渲染内容两次

时间:2015-01-09 18:08:39

标签: ruby-on-rails pdf prawn

我有一个由prawn生成的pdf,它包含一个标题,一个表和一个页脚。页眉和页脚都是可重复的,:dynamic => true,表格不是。

我遇到的问题是页眉和页脚上的所有内容都显示为好像它在同一个地方呈现两次,这似乎搞乱了抗锯齿功能,所以文本看起来像是波涛汹涌和粗体(见下图)。但是,当我放大或打印它时,它看起来是正确的。

以下是我启动转发器块的具体部分的一些代码:

pdf = Prawn::Document.new :page_size => "A4", :margin => [28, 20, 7, 20]

(...)

pdf.repeat :all, :dynamic => true do
  pdf.bounding_box([0, 803], :width => 555, :height => 60) do
    pdf.stroke_bounds

    (...)
  end
end

(...)

pdf.render
# End of file

据我所知,这是声明转发器块的默认方式,我几乎从手册中反映了它。

这是图像:顶部容器是标题,在转发器内部,看起来一切都是粗体,但它与下面的部分完全相同的字体和线宽,它来自表格,看起来很好。对不起,我不能发布pdf的大部分内容,这是出于保密原因。

Division between wrong and correct sections

如果我删除转发器,标题看起来应该是正确的,但是当我再次添加它时它看起来像这样。

之前是否有其他人遇到此问题?我该如何解决?

编辑:上面添加了一些代码。还添加了下面的代码,它位于Rails模板文件“historico.pdf.prawn”中,这就是我在控制器上调用它来呈现PDF并将其返回给用户的方式:

rendered_pdf = render_to_string :template => "reports/historico.pdf"
send_data rendered_pdf, :filename => "Historico.pdf", :type => "application/pdf"

1 个答案:

答案 0 :(得分:2)

当您使用pdf.repeat :all时,pdf会重新开启'在创建文档并添加重复块内的数据之后。这可能导致无数奇怪的行为,我相信这是导致你的问题的原因。

有一个related issue with a solution使用了Prawn的canvas方法。如果您根据问题调整此解决方案(使用canvas生成页眉和页脚,而不是repeat :all),则不应再出现这些文本文本错误。

注意:

您可能很重要的是,您知道Prawn有officially stated他们是,并且#34;不支持模板功能(我提出这个问题因为您似乎正在创建模板) ,"如果您继续使用此工具来满足这些类型的需求,则可能需要类似的解决方法。根据您对这些类型的模板功能的依赖性,可能希望使用其他工具。