首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >prawnto显示新页面时不会拆分的表格

prawnto显示新页面时不会拆分的表格
EN

Stack Overflow用户
提问于 2010-01-18 00:21:07
回答 4查看 5.1K关注 0票数 5

我有一个可变数量的表格,其中的行数是可变的,我想让它们一个接一个地显示,但是如果一个表格不适合当前页面,就把它放到下一个页面上,然后继续。我将表格放在一个事务中,这样如果当前页面适合高度,我就可以回滚,然后打印它,但是我如何获得表格高度呢?

我现在有这个代码

代码语言:javascript
复制
pdf.transaction do 

pdf.table @data,
    :font_size  => 12, 
    :border_style => :grid,
    :horizontal_padding => 10,
    :vertical_padding   => 3,
    :border_width       => 2,
    :position           => :left,
    :row_colors => ["FFFFFF","DDDDDD"]

pdf.move_down 20

#pdf.rollback 
end

这方面的任何帮助都是很好的。或任何其他方法来做到这一点?

向里克致以最好的问候

EN

回答 4

Stack Overflow用户

发布于 2016-06-29 21:42:35

四年后...:)

正如@m-x所写的,由于安全原因,回滚被禁用了,就像"group“一样,并且仍然没有实现。因此,下面是我如何处理表格的分页:

大而简单的表格(每个数据一行)

只需使用标题选项

代码语言:javascript
复制
pdf.table @data,
  header: true, # You can use 'header: 2' if your header take two rows
  font_size: 12, 
  border_style: :grid,
  horizontal_padding: 10,
  vertical_padding: 3,
  border_width: 2,
  position: :left,
  row_colors: ["FFFFFF","DDDDDD"]

小表或复合表

  • make table
  • check if you need break page
  • draw table

(如果需要分页,请检查是否需要分页绘制表格)

在您的示例中:

代码语言:javascript
复制
t = pdf.make_table @data,
  font_size: 12, 
  border_style: :grid,
  horizontal_padding: 10,
  vertical_padding: 3,
  border_width: 2,
  position: :left,
  row_colors: ["FFFFFF","DDDDDD"]

if cursor - t.height < 0
  start_new_page
end

t.draw

希望这能有所帮助

票数 7
EN

Stack Overflow用户

发布于 2010-02-12 19:31:04

@current_page = pdf.page_count

代码语言:javascript
复制
@roll = pdf.transaction do 
  pdf.move_down 20

  pdf.table @data,
    :font_size  => 12, 
    :border_style => :grid,
    :horizontal_padding => 10,
    :vertical_padding   => 3,
    :border_width       => 2,
    :position           => :left,
    :row_colors => ["FFFFFF","DDDDDD"]

  pdf.rollback if pdf.page_count > @current_page

end 

if @roll == false

  pdf.start_new_page

  pdf.table @data,
    :font_size  => 12, 
    :border_style => :grid,
    :horizontal_padding => 10,
    :vertical_padding   => 3,
    :border_width       => 2,
    :position           => :left,
    :row_colors => ["FFFFFF","DDDDDD"]
end

我希望这对你和我一样有效:-)

票数 5
EN

Stack Overflow用户

发布于 2010-01-18 01:27:02

我是一个虾的初学者,所以这可能不是最好的解决方案,但它应该可以工作。

如果考虑到@data中的字体大小、垂直填充和记录数,就可以得到表的高度,还可以通过调用Prawn::Document.cursor方法获得当前的光标位置。

有了这两个数字,你应该能够检查表格是否适合这个页面。如果没有,只需启动一个新的(通过调用Prawn::Document.start_new_page方法)。

否则,表格将自动断开并继续下一页。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2081635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档