2016-02-01 30 views
2

我只能得到页面尺寸采用为默认信纸大小:如何使用Prawn设置页面大小?

def show 
    @card = Card.find(params[:id]) 
    respond_to do |format| 
    format.html 
    format.pdf do 
     pdf = CardPdf.new(@card) 
     send_data pdf.render, filename: "#{@card.entrant_first_name}_#{@card.entrant_surname}_#{@card.section}.#{@card.category}.pdf", 
     type: "application/pdf", 
     disposition: "inline" 

    end 
    end 
end 

当我改变这一行:

pdf = CardPdf.new(@card) 

这样:

pdf = Prawn::Document.new(:page_size => "A6", :page_layout => :landscape) 

它的工作原理,但我不再看到我的card_pdf.rb文件中的内容。

这是我CardPdf:

class CardPdf < Prawn::Document 

    def initialize(card) 
    super() 
    @card = card 
    font_families.update("Roboto" => { 
     :normal => "#{Prawn::BASEDIR}/fonts/Roboto.ttf" 
    }) 
    font_families.update("SourceCodePro" => { 
     :normal => "#{Prawn::BASEDIR}/fonts/SourceCodePro.ttf" 
    }) 
    font("Roboto") 
    header 
    move_down 25 
    page_title 
    move_down 20 
    card_info 
    end 

    def horizontal 
    stroke do 
     move_down 15 
     stroke_color 'f3f3f3' 
     line_width 2 
     stroke_horizontal_rule 
     move_down 15 
    end 
    end 

    def header 
    text "Dalgety Bay Horticultural Society", size: 10, :color => "b9b9b9", :character_spacing => 1 
    end 

    def page_title 
    text "Card", size: 32,:color => "222222", :character_spacing => 1 
    end 

    def card_info 


    horizontal 

    end 

end 
+0

请出示您的CardPdf课程。 – infused

回答

4

这主要是因为你不再叫@card

pdf = Prawn::Document.new(:page_size => "A6", :page_layout => :landscape) 

这是更好的使用是这样的:在这个文件中

def initialize(...,...) 
    super :page_size => "A4", :page_layout => :landscape 
end 

class ....Pdf < Prawn::Document 
相关问题