如何使用Prawn设置页面大小?

时间:2016-02-01 23:26:04

标签: ruby-on-rails ruby pdf rubygems 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

1 个答案:

答案 0 :(得分: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