2010-10-19 1 views
2

Я использую Rails Prawn для создания PDF-файлов. Теперь, когда я могу генерировать PDF со всеми необходимыми вещами, которые мне нужны (например, таблица, заголовок, нижний колонтитул, логотип, границы и т. Д.). Теперь мне нужно использовать общие вещи (заголовок, foooter, границы) в методе внутри отдельного модуля и вызывать этот метод из моей оригинальной программы?Креветка - как обобщить общие вещи в документе pdf в отдельный модуль для повторного использования кода?

Моя оригинальная программа: travel_report.rb модуля TravelReport

включает заголовок четкости self.generate (start_ts, end_ts, format_type, obu_ids, интервал) Креветку :: Document.generate ("публичный/тест. PDF ") сделать

Границы

page_count.times do |i| 
go_to_page(i+1) 
Header.border 
end 

Header и граничные линии

page_count.times do |i| 
    go_to_page(i+1) 
ask = "public/ashok.jpg" 
    image ask, :at => [15, 750], :width => 120 
    alert = "public/alert.jpg" 
    image alert, :at => [410, 740], :width => 120 
    end 

сноска
page_count.times do |i| 
    go_to_page(i+1) 
    lazy_bounding_box([bounds.left+30, bounds.bottom + 20], :width => 100) { 
    text "Bypass Report" 
    }.draw 
    end 
end 

Отдельный модуль для границ модуля заголовка #class Cheader < креветка :: Документ :: BoundingBox #include Креветки Защиту self.border

 pdf = Prawn::Document.new 
     pdf.bounding_box([5, 705], :width => 540, :height => 680) do 
     pdf.stroke_bounds 
     end 

end 
#end 

конец

Этот код не создает ny border ... Любая идея, как создать отдельный модуль для этого ????

ответ

0
#create a separate module 

#program 



include HeaderFooter 
Prawn::Document.generate("public/test.pdf") do |pdf| 
pdf.page_count.times do |i| 
     pdf.go_to_page(i+1) 
     HeaderFooter.border(pdf)  
     #render :partial => 'header', :locals => {:ppdf => pdf} 
     end 

#Header and Boundary Lines  
     pdf.page_count.times do |i| 
     pdf.go_to_page(i+1) 
      HeaderFooter.image(pdf) 
     end 
#footer 
     pdf.page_count.times do |i| 
     pdf.go_to_page(i+1) 
     HeaderFooter.footer(pdf) 
     end 
    end 




create a module to define the methods(header_footer.rb) 
module HeaderFooter 
    #Method for border creation in pdf 
    def self.border(ppdf) 
     ppdf.bounding_box([5, 705], :width => 540, :height => 680) do 
     ppdf.stroke_bounds 
     end 
    end 
    #method to create the logos in the pdf 
    def self.image(ppdf) 
     ask = "public/ashok.jpg" 
     ppdf.image ask, :at => [15, 750], :width => 120 
     alert = "public/alert.jpg" 
     ppdf.image alert, :at => [410, 740], :width => 120 
    end 
    #method to print footer text in the pdf 
    def self.footer(ppdf) 
     ppdf.lazy_bounding_box([ppdf.bounds.left+30, ppdf.bounds.bottom + 20], :width => 100) { 
     ppdf.text "Bypass Report" 
     }.draw 
    end 

end 

Это прекрасно работает ...

 Смежные вопросы

  • Нет связанных вопросов^_^