【问题标题】:Setting cell/column widths on a Prawn table在虾表上设置单元格/列宽
【发布时间】:2010-10-17 02:31:30
【问题描述】:

我正在用 ruby​​ 制作一个小脚本,它会生成一个周计划 PDF 文件,使用 Prawn 作为 PDF 库,我正在努力设计表格的样式。我想为表格中的所有列设置一个静态宽度,这样宽度就不会取决于单元格的内容。

我已经阅读了 Prawn 项目网站的文档(那里有很大的改进空间)并搜索了几个小时,但我不知道如何为表格中的列或单元格设置宽度,或者如何设置以任何方式设置列/单元格的样式。我确实得到了一个具有网格布局的 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

【问题讨论】:

  • 如果您对 Prawn 的文档不满意,请投稿。

标签: ruby prawn


【解决方案1】:

我会这样做:

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()

更多信息here

【讨论】:

    【解决方案2】:

    要为所有列设置静态宽度,我会这样做:

    REPORT_FIELDS = %w[DESCRIPTION PRICE DATE NOTE].freeze
    A4_SIZE = 200.freeze
    
    data = []
    data << REPORT_FIELDS
    ... things happen ...
    table(data, column_widths: (A4_SIZE/REPORT_FIELDS.size).mm))
    

    在这种情况下,我想将表格设置为适合整个页面,并且单元格具有相同的宽度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-02
      • 1970-01-01
      • 2010-10-30
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多