2

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

サブテーブルにスタイリングを適用する方法について何か提案はありますか? よろしくお願いします。

乾杯、マーク

4

1 に答える 1

6

OK、これが修正された方法です。「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
于 2013-04-15T09:52:23.950 に答える