Prawn表

时间:2016-10-19 19:20:38

标签: ruby-on-rails pdf-generation prawn

我试图在Rails 4中使用prawn创建一个pdf文件。我需要将垂直文本作为具有大宽度的表的标题行。因为如果我使用水平行标题,表将不适合(表的内容是1或2个字符的文本)。

我尝试在prawn-table中使用rotate选项。但这只适用于我设置宽度足以在文本处于水平方向时保持文本的情况。但是当我想要垂直时它是浪费空间。但是,如果我减少列标题的宽度,文本就会中断。

这似乎是此处报告的错误https://github.com/prawnpdf/prawn/issues/409。而且这个拉动请求似乎解决了问题https://github.com/prawnpdf/prawn-table/pull/32

但由于我正在使用prawn-rails,因此我很难更改gem以使用尚未合并到主服务器的pull请求。

我应该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

我终于在我的rails项目中使用the PR of straydogstudio解决了这个问题。这是一步一步的解决方案。

首先编辑Gemfile以包含来自straydogstudio的repo的prawn-table gem。

gem 'prawn-table', :git => 'https://github.com/straydogstudio/prawn-table.git', ref: '759a27b6'

我使用ref:选项来最小化整个存储库所需的下载。

接下来,我使用了:rotate选项而没有:valign。这很重要,因为当使用:valign时,文本会以某种方式混乱。

我在prawn表初始化块中使用的选项是

    cells.font_size = 6
    cells.padding = [1, 1]

    row(0).rotate = 90
    row(0).columns(3..52).rotate = 0 # every splitted column should be counted
    row(0).height = 40
    row(0).width = 15
    row(0).align = :center
    row(1).columns(0..-1).rotate = 90 # rotate the second row too!
    row(1).height = 30

结果令人满意。以下是复杂设置的屏幕截图。

table with rotate fix

希望这将有助于未来的访客。