使用ruby将文本添加到现有pdf

时间:2013-10-07 15:13:22

标签: ruby-on-rails ruby pdf

我有一个rails应用程序正在加入任何计数的pdf文件。现在我需要使用ruby为加入的pdf添加编号。

是否有使用ruby为现有pdf文件添加文本或其他内容的最先进方法?

3 个答案:

答案 0 :(得分:1)

这个解决方案对我有用......

Prawn::Document.generate("output.pdf", :template => "/path/to/template.pdf") do
  text "This is a text in a copied pdf.", :align => :center
end

答案 1 :(得分:1)

您可以使用CombinePDF

我写这篇文章是因为Prawn放弃了他们的模板支持,我需要一个原生的替代品。

您的代码可能如下所示:

pdf = CombinePDF.new
pdf << CombinePDF.new("file1.pdf")
pdf << CombinePDF.new("file2.pdf")
pdf.number_pages
pdf.save "output.pdf"

查看不同格式选项的文档 - 我喜欢用圆框包围编号(它在功能中,应该很容易玩)。

答案 2 :(得分:1)

在Ruby / Rails中使用PDF确实是一个挑战(所以我发现了!)

这是我能够在Rails中动态添加文本到PDF的方式。

将此宝石添加到您的宝石文件gem "combine_pdf"

然后您可以使用如下代码:

# get the record from the database to add dynamically to the pdf
user = User.last

# get the existing pdf
pdf = CombinePDF.load "#{Rails.root}/public/pdf/existing_pdf.pdf"

# create a textbox and add it to the existing pdf on page 2
pdf.pages[1].textbox "#{user.first_name} #{user.last_name}", height: 20, width: 70, y: 596, x: 72

# output the new pdf which now contains your dynamic data
pdf.save "#{Rails.root}/public/pdf/output#{Time.now.to_s}.pdf"

您可以在此处找到有关文本框方法的详细信息: https://www.rubydoc.info/gems/combine_pdf/0.2.5/CombinePDF/Page_Methods#textbox-instance_method

我花了几天时间研究了许多不同的宝石: prawn wicked_pdf pdfkit fillable_pdf

但这是截至2019年对我而言最平滑的解决方案。

我希望这可以节省一些人的时间,这样他们就不必经历我对PDF的所有反复试验!