Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Prawn PDF:在同一页上呈现一组内容_Ruby_Prawn - Fatal编程技术网

Ruby Prawn PDF:在同一页上呈现一组内容

Ruby Prawn PDF:在同一页上呈现一组内容,ruby,prawn,Ruby,Prawn,我正在寻找一种方法来做到以下几点 pdf.on_same_page do pdf.text "foo" pdf.imaage bar pdf.table(baz) .... end 换句话说,我想对几个元素进行分组,这样如果整个组可以放在页面上,就可以在同一页面上进行渲染,否则就需要分页符并在下一页面上进行渲染(假设整个组可以放在一个页面上) 这样的事情是如何完成的?我使用了稍微不同的方法,但使用的是表格 footer_table = pdf.make_table(da

我正在寻找一种方法来做到以下几点

pdf.on_same_page do
   pdf.text "foo"
   pdf.imaage bar
   pdf.table(baz)
   ....
end
换句话说,我想对几个元素进行分组,这样如果整个组可以放在页面上,就可以在同一页面上进行渲染,否则就需要分页符并在下一页面上进行渲染(假设整个组可以放在一个页面上)
这样的事情是如何完成的?

我使用了稍微不同的方法,但使用的是表格

footer_table = pdf.make_table(data) do
  cells.borders = []
  row(0).font_style = :bold
  row(2).font_style = :bold
end
pdf.start_new_page if (pdf.cursor - footer_table.height).negative?
footer_table.draw

鉴于
pdf
是pdf文档,我只在表格适合页面的情况下才放它。

我理解你想要什么,但我想不出确切的方法。有一个选项可以模拟文本框的渲染,称为dry_run。您可以查看它来计算文本的高度。使用该图像,您可以在之前获取高度信息,也可以设置固定高度,以便知道确切的高度。最后,使用该表,您还可以计算它有多少行,并设置每行的高度。通过这种方式,你可以手动计算所有东西的大小。我认为Prawn没有一种方法可以自动计算东西的高度,或者在不合适的情况下将东西移动到新页面。