ruby-on-rails-3 - 我如何在 Prawn 中格式化和设置子表的样式?

标签 ruby-on-rails-3 pdf prawn

我刚开始使用 Prawn 生成 PDF,所以这可能是一个简单的问题,但它让我抓狂!

我有一个包含嵌套子表的表。我已经能够轻松地设置主表的样式和格式,但我似乎无法对嵌套的子表做同样的事情。我真正需要做的就是设置列宽并删除边框,但我似乎无法弄清楚。

这是我目前的代码:

  def line_items
    data = line_item_rows
    table(data)  do
       row(0).font_style = :bold
       columns(0).width = 160
       columns(1).width = 300
       columns(2).align = :right
       columns(2).valign = :bottom
       row(0).columns(2).valign = :top
       row(0).columns(2).align = :left
       self.header = true
    end   
  end

  def line_item_rows
    [["Description", "Items" ,"Price ex GST"]] +
    @line_items.map do |item|
      [item.description, sub_item_rows(item), price(item.charge_ex_gst)] 
    end +
    [["","Total", price(@project.charge_ex_gst)]]
  end

  def sub_item_rows(item)
   item.sub_items.map do |sub_item|
      ["#{sub_item.quantity} x  #{sub_item.name} #{price(sub_item.total_charge_ex_gst)}"] 
    end
  end

关于如何将样式应用到子表,有什么建议吗? 预先感谢您的帮助。

干杯,马克

最佳答案

好的,这是修复的方法。我需要使用“make_table”并像这样应用格式:

  def line_items
    move_down 15
    data = line_item_rows

        table(data) do
           row(0).font_style = :bold
           columns(0).width = 160
           columns(1).width = 300
           columns(2).align = :right
           columns(2).valign = :bottom
           row(0).columns(2).valign = :top
           row(0).columns(2).align = :left
           self.header = true
        end     
  end

  def line_item_rows
    [["Description", "Items" ,"Price ex GST"]] +
    @line_items.map do |item|
      [item.description, 
        sub_items(item), 
        price(item.charge_ex_gst)] 
    end +
    [["","Grand Total", price(@project.charge_ex_gst)]]
  end

  def sub_items(item)
    sub_data = sub_item_rows(item)
    make_table(sub_data) do
       columns(0).width = 200
       columns(1).width = 100
       columns(1).align = :right
       #columns(0).borders = []
    end   
  end

  def sub_item_rows(item)
   item.sub_items.map do |sub_item|
      ["#{sub_item.quantity} x #{sub_item.name}", price(sub_item.total_charge_ex_gst)] 
    end  +
      [["","Total"]]
  end

关于ruby-on-rails-3 - 我如何在 Prawn 中格式化和设置子表的样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939199/

相关文章:

ruby-on-rails - 使用单个查询从 has_many Rails 关联中删除记录

ruby-on-rails - Cucumber Capybara 按 id、名称或标签以外的方式查找复选框

ruby-on-rails-3 - RoR audio_tag helper多个源文件

android - 如何在我的应用程序生成的 pdf 中添加货币符号?

java - iText 和数字签名

ruby - 使用 Prawn Ruby 库时的当前光标位置

ruby-on-rails - 如何使用prawn在pdf中插入图像

ruby-on-rails - 如何使用 ActiveRecord 返回 Rails 中关联的模型对象

c# - 使用 GhostScript 打印 PDF

ruby-on-rails - 如何用 Prawn 缩进一个完整的段落?