在Ruby / Rails中生成PDF / HTML / DOCX的最佳方法是什么?

时间:2015-06-02 08:14:43

标签: ruby-on-rails pdf docx prawn

我需要创建一个应用程序,它可以从字段中生成自动生成的CV。我需要将它们转换为PDF / HTML / DOC,但有许多宝石可用。

您认为哪种宝石最适合制作PDF,HTML和DOC格式的简历?

我找到了PDF的大虾,但它最适合制作类似CV的PDF吗?

提前谢谢。

编辑:我找到了一个类似于Prawn的宝石,但是对于docx可能会让你感兴趣。 https://github.com/trade-informatics/caracal/

4 个答案:

答案 0 :(得分:7)

用于创作PDF文件

我会使用 Prawn 而不是Wicked-PDF

我知道恶人更方便,但是Prawn既是原生的又是更灵活的。

Wicked依赖于wkhtmltopdf并使用系统调用 - 系统调用可能会导致并发问题,并且就性能而言也很昂贵。

您使用哪一个,我可能会将CombinePDF添加到混合中。 (我有偏见)

这将允许您使用模板PDF文件 - 因此您可以使用Prawn或Wicked编写您的简历,并使用CombinePDF gem将其扔到设计精美的模板上。

CombinePDF也可用于创建简单的文本对象,数字页面或写表...

require 'combine_pdf'
pdf = CombinePDF.new
pdf.new_page.textbox "Hello World!", font_size: 18, opacity: 0.75
pdf.save 'test.pdf' # use pdf.to_pdf to render the PDF into a String object.

...但我认为Prawn是一个更好的创作工具,而CombinePDF是一个很好的补充库,可以添加预制内容和设计:

require 'combine_pdf'
# get a "stamp" or page template.
# the secure copy will attempt to change the PDF data to avoid name conflicts.
template = CombinePDF.load(template_file_path).pages[0].copy(true)
# move the Prawn document into CombinePDF
pdf = CombinePDF.parse prawn_document.render
# add the template to each page, putting the template on the bottom
# (#>> for bottom vs. #<< for top)
pdf.pages.each {|page| page >> template}
# save the pdf file
pdf.save 'final.pdf' # or render to string, for sending over HTTP: pdf.to_pdf

对于docx,我很无能......坦率地说,这是一种专有格式,在逆向工程时通常会出现问题。我会避免它,让人们复制并粘贴HTML,如果他们真的想要的话。

答案 1 :(得分:2)

我始终将Prawn用于PDF,将Caracal用于DOCX。

我相信Caracal的创建者受到了对虾使用简便性的启发。

答案 2 :(得分:1)

我在工作中使用这些宝石,如果可以帮助的话,它们非常好。

对于html,一个简单的渲染可以工作。

答案 3 :(得分:0)

你可以查看Ruby toolbox获取pdf generation的可用gems.i会推荐Prawn,因为我自己使用它,并且需要非常简单的简单代码来生成pdf。

例如: -

require "prawn"

Prawn::Document.generate("hello.pdf") do
  text "Hello World!"
end

使用Ruby工具箱也可以找到docx / html的其他宝石:)