2013-03-04 74 views
2

我有安裝在我的rails 3應用程序中的蝦寶石。在頁面中的頁腳不能正常工作(蝦PDF)3.2

我想知道爲什麼我的頁腳不能在每一頁中工作。

它只在最後一頁的末尾工作。

這裏是我的代碼:

(我是很新的對蝦)

所以,請多多包涵。

任何變通辦法將是非常讚賞

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 

解決了!

看看我發現如下。

回答

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 
+1

哈哈很好聽,我來不及post..haha但是很高興你發現了它。 – ksugiarto 2013-03-04 08:29:15

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,但我的工作,因爲有了它,我們可以自由地分配它的位置,它很簡單。

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 
3

我試圖產生左/中/右 - 上的內容每個頁面在底部邊緣之外。
number_pages只生成一個塊。
幾個apporoaches:

a。使用repeattext_box。這裏最重要的是,text_box需要一個eplicit高度範圍之外,以顯示:

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可以生成範圍(其內部設置heigth)以外的文本:

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 
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