红宝石虾宝石,表位

时间:2011-09-28 05:22:33

标签: ruby-on-rails pdf prawn

使用prawn gem我在pdf文件中显示表..现在我想设置表的位置,请指导我如何处理这个..

我使用以下代码生成pdf报告,

pdftable = Prawn::Document.new

pdftable.table([["Name","Login","Email"]],
:column_widths => {0 => 80, 1 => 80, 2 => 80, 3 => 80}, :row_colors => ["d5d5d5"])

 @users.each do|u|
 pdftable.table([["#{u.name}","#{u.login}","#{u.email}"]],
 :column_widths => {0 => 80, 1 => 80, 2 => 80, 3 => 80 }, :row_colors => ["ffffff"])

感谢

3 个答案:

答案 0 :(得分:2)

你可以将函数indent()与函数move_down和move_up结合使用, 所以例如位置(50,20)的设置表(相对于光标位置)将如下所示:

move_down 20
indent(50) do #this is x coordinate
    pdftable.table([["Name","Login","Email"]],
    :column_widths => {0 => 80, 1 => 80, 2 => 80, 3 => 80}, :row_colors => ["d5d5d5"])

    @users.each do|u|
    pdftable.table([["#{u.name}","#{u.login}","#{u.email}"]],
    :column_widths => {0 => 80, 1 => 80, 2 => 80, 3 => 80 }, :row_colors => ["ffffff"])
end

`

答案 1 :(得分:0)

您可能需要在表格周围创建bounding_box。请参阅documentation for bounding boxes

另外:您是否意识到您正在为标题和每个用户创建一个新表?

答案 2 :(得分:0)

您需要将 prawn-layout 的依赖项(除了 prawn )添加到Gemfile

# Gemfile
...
gem 'prawn'
gem 'prawn-layout'
...

然后运行

bundle install
从控制台

,让bundler下载新的gem。

在此之后,除了 prawn 要求以及 prawn / layout 要求之外,您还必须包括要生成PDF的位置:

# your_pdf_builder_lib.rb
require 'prawn'
require 'prawn/layout'

完成这一点,你唯一需要写的就是这样:

# your_pdf_builder_lib.rb
require 'prawn'
require 'prawn/layout'
...
def build_pdf
  p = Prawn::Document.new(:page_size => "A4")
  ...
  data = [["header 1", "header 2"], [data_col1, data_col2], ...] # your content for table
  ...
  p.table data, :position => :center # :position => :center will do the trick.
  ...
  p.render
end