1

我在 Ruby on Rails 上使用 Wicked PDF gem 生成 PDF,但必须在每个页面上重复一些 HTML 内容。

我正在尝试将页面的一部分用于我的主要内容,并在每个页面中使用 HTML 在其周围添加内容。

类似这张图片的东西(检查)

我尝试使用标题,但我无法将内容放在 HTML 前面(即使使用 z-index),并且只能垂直定位具有边距和间距的主要内容(没有找到任何选项横向进行)。

有任何想法吗?谢谢!

4

1 回答 1

0

由于没有人回答,我将在这里发布我的解决方案。它既不美丽也不辉煌,与这些相去甚远——但既然没有人回答,也许我们可以从它开始讨论。

我能够使用 Wicked PDF 生成只有文本(但边距正确)、没有背景的 PDF。喜欢这个形象。我用它来保存文件。

这是它的代码:

# Save PDF with only the text (with correct margins)
render :pdf => "text#{id}",
       :margin => {:top => "1.6in", :left => "4.1in", :right => "1.2in", :bottom => "2.5in"},
       :page_size => "Letter",
       :template => "careers/job_pdf_text.pdf.erb",
       :save_to_file => Rails.root.join('public/job_pdf_tempfiles', "text#{id}.pdf"),
       :save_only => true,
       :no_background => true

然后我使用 RMagick 从这个保存的 PDF 中创建图像。这里重要的是我保存了具有透明背景的 GIF,Magick 为 PDF 的每一页创建了一个图像。这是保存图像的代码:

# Save images from the only-text PDF
@text_images = []
text_images_magick = Magick::Image.read(Rails.root.join('public/job_pdf_tempfiles', "text#{id}.pdf"))
text_images_magick.each_with_index do |image, index|
    file_name = Rails.root.join('app/assets/images/careers_pdf', "text#{id}-#{index}.gif")
    image.write(file_name)
    @text_images << file_name
end

好的,所以此刻我有文字的图像,就像这样。现在我所做的是将它们放在 HTML 页面中的正确位置,然后再次使用 Wicked PDF 来呈现最终的 PDF。我使用边距 0 渲染 PDF,并为每个 @text_images 创建了一个容器,从中我定位了其他所有内容(包括图像本身)以实现我在开始时想要的。

有没有人有更好的想法可以分享?

于 2013-04-03T20:10:13.927 回答