大虾:带有特定于模型的信息的静态标头可能吗?

问题描述

| 我正在Rails和Prawn中构建PDF导出功能,我想在一个PDF中导出多个“公司”。公司通常流过2-3页。现在,当导出单个公司时,它可以使用pdf.repeat(:all)。我希望徽标根据公司在标题中更改。一个简单的代码示例是:
@companies.each do |c|
 pdf.repeat(:all) do
  pdf.image company.logo.url(:thumb),:at => [0,520]
 end
end
有办法吗?我看过相关的主题,例如Prawn PDF中的页眉和页脚,但是它对我没有帮助,因为在生成该页后,我看不到公司属于哪个页面。     

解决方法

很棒的自我文档手册(http://cloud.github.com/downloads/sandal/prawn/manual.pdf)包含以下代码(第105页),可能会有帮助:
repeat(lambda { |pg| pg % 3 == 0 }) do
  draw_text \"Every third page\",:at => [250,20]
end
repeat(:all,:dynamic => true) do
  draw_text page_number,:at => [500,0]
end
只要您知道哪个公司从哪个页面开始,那么lambda或dynamic都应该为您解决问题。 如果您不知道每个公司的页面数,请为每个页面制作一个pdf文件并将其合并。手册,第109页:
filename = \"#{Prawn::BASEDIR}/data/pdfs/multipage_template.pdf\"
Prawn::Example.generate(\"full_template.pdf\",:template => filename) do
  go_to_page(page_count)
  start_new_page
  text \"Previous pages and content imported.\",:align => :center
  text \"This page and content is brand new.\",:align => :center
end
在最坏的情况下,您最终将一次合并两个。 您可能还会检查带有
:filter
选项的
pdf.number_pages
是否适用于图像(如果尚未尝试过)。我完全不知道它是否有效,现在也没有机会检查它。     ,不确定这是否有帮助,但是WickedPDF是Prawn的不错替代品。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...