6

Prawn を PDF ライブラリとして使用して、週のスケジュール PDF ファイルを生成する ruby​​ で小さなスクリプトを作成しています。テーブルのスタイリングに苦労しています。幅がセルの内容に依存しないように、テーブル内のすべての列に静的な幅を設定したいと思います。

Prawn プロジェクト サイトのドキュメント (そこには改善の余地がたくさんあります) を読み、数時間グーグルで検索しましたが、テーブルの列またはセルの幅を設定する方法、または列のスタイルを設定する方法がわかりません。 /cells あらゆる方法で。グリッド レイアウトの PDF ファイルを取得しましたが、セルのサイズが大きく異なり、見栄えがよくありません。

これはうまくいきませんでした:

Prawn::Document.generate(@filename, :page_size => 'A4', :page_layout => :landscape) do
  table(course_matrix, :headers => HEADERS, :border_style => :grid, :row_colors => ['dddddd', 'eeeeee'], :column_widths => 50)
end

PDFを生成する私の方法の現在のバージョンは次のとおりですが、セルのスタイルも設定されていません。

def produce_pdf
  course_matrix = DataParser.new.parse_for_pdf

  Prawn::Document.generate(@filename, :page_size => 'A4', :page_layout => :landscape) do
    table(course_matrix, :headers => HEADERS, :border_style => :grid, :row_colors => ['dddddd', 'eeeeee']) do |table|
      table.cells.style { |cell| cell.width = 50 }
    end
  end
end
4

2 に答える 2

13

私はこのようなことをします:

pdf = Prawn::Document.new(
  :page_size => 'A4',
  :page_layout => :landscape,
  :margin => [5.mm])
  ....
  .... 
  pdf.table(tbl_data) do
    row(0).style(:background_color => 'dddddd', :size => 9, :align => :center, :font_style => :bold)
    column(0).style(:background_color => 'dddddd', :size => 9, :padding_top => 20.mm, :font_style => :bold)
    row(1).column(1..7).style(:size => 8, :padding => 3)
    cells[0,0].background_color = 'ffffff'
    row(0).height = 8.mm
    row(1..3).height = 45.mm
    column(0).width = 28.mm
    column(1..7).width = 35.mm
    row(1..3).column(6..7).borders = [:left, :right]
    row(3).column(6..7).borders = [:left, :right, :bottom]
  ....
 pdf.render()

詳細はこちら

于 2010-10-17T05:33:55.210 に答える