2

我在我的 rails 3 应用程序中安装了对虾 gem。

我想知道为什么我的页脚在每一页中都不起作用。

它仅在最后一页的末尾起作用。

这是我的代码:

(我对虾很陌生)

所以请多多包涵。

任何解决方法将不胜感激

require 'prawn'
require 'rubygems'
require 'date'

pdf = Prawn::Document.new(:page_layout => :landscape,:skip_page_creation => true,:margin => [5,5,5,5]) do
    start_new_page
    pdf.font "Helvetica"    
end


pdf.text "Project Procurement Management Plan (PPMP)", :size=> 12, :spacing => 4, :align=> :center

pdf.move_down 400


pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"
pdf.text "Text"


# This is the footer code

pdf.bounding_box([pdf.bounds.right - 59, pdf.bounds.bottom - -20], :width => 60, :height => 20) do

  pagecount = pdf.page_count
  pdf.text "Page #{pagecount}"
end

解决了!

看看我在下面发现了什么。

4

5 回答 5

3

嗨,我已经找到了答案。

对于那些遇到这样麻烦的人:

pdf.repeat :all do

  pdf.bounding_box [pdf.bounds.left, pdf.bounds.bottom + 25], :width  => pdf.bounds.width do
  pdf.stroke_horizontal_rule
  pdf.move_down(5)
  pdf.text "#{current_user.first_name}", :size => 10
end
end
于 2013-03-04T08:24:27.397 回答
3

我试图在每个页面的底部边缘之外生成左/中/右 - 内容。
number_pages只生成一个块。
几种做法:

一个。使用repeattext_box。这里重要的是,text_box需要在边界之外显示一个显式高度:

repeat :all do
  text_box "title: some text", at: [bounds.left, -20], height: 20
  text_box "printet at #{Time.now}", height: 20, width: 200, align: :right, at: [bounds.right-200,-20]
end

湾。您可以在 PDF 生成结束时调用number_pages多次。您不必提供页码模板。number_pages可以在边界之外生成文本(它在内部设置高度):

number_pages "title: some text", at: [bounds.left, -20]
number_pages "page <page> of <total>", at: [300,-20]
number_pages "printed at #{Time.now}", at: [bounds.right-200,-20], width: 200, align: :right
于 2014-06-28T05:54:06.257 回答
1

如果您不需要显示水平线分隔符,那么这是最小的解决方案,因为pdf.number_pages即使没有pdf.repeat(:all)

options = {
        :at => [pdf.bounds.right - 150, 0],
        :width => 150,
        :align => :right,
        :start_count_at => 1
}
pdf.number_pages "Page <page> of <total>", options
于 2013-03-13T10:28:09.407 回答
1

尝试这个

pdf.page_count.times do |i|
  pdf.go_to_page(i+1)
  pdf.bounding_box([0, pdf.bounds.bottom + 25], :width => pdf.bounds.width) {
    pdf.line_width(3)
    pdf.stroke_horizontal_rule
    pdf.move_down(5)
    pdf.draw_text "Page #{i+1}" ,:at => [240, pdf.bounds.height - 20]
    pdf.draw_text "#{Time.now.strftime("%B %d, %Y")}" ,:at => [455, pdf.bounds.height - 20]
  }
end
于 2016-03-30T07:35:51.787 回答
0

尝试这个:

pdf.repeat(:all) do
  pdf.stroke do
    pdf.horizontal_line 0, 540, :at => 10
  end

  pdf.number_pages "(<page>/<total>)", :size => 9, :at => [500, 0]
end

所以我的理解是,我需要使用它number_pages来创建它,基本上我所做的并不干净和正确,因为对于创建页眉和页脚,我使用了所有number_pages但我使用它,因为使用它我们可以自由分配它的位置,并且这很简单。

于 2013-03-04T08:27:58.183 回答