0

我做了很多搜索,但找不到让 PDF-stamp 在我的 rails 应用程序中工作的解决方案。从教程看来,我在模型中编写了一个方法?我编写了一个包含两个字段的简单应用程序:nameLast 和 nameFirst。我想要做的就是将这些写到我拥有的包含用户信息字段的 PDF 中。两个字段恰好是 FirstName 和 LastName,所以是使用 PDF-stamp 的最佳时机,对吧?我只想从 Rails 应用程序中获取用户数据,然后能够按下按钮并生成 PDF。这是我在模型中使用的方法。

  def savePDF
    pdf = PDF::Stamper.new("sample.pdf") 
          pdf.text :nameFirst, "Jason"
               pdf.text :nameLast, "Yates" 
               pdf.save_as "my_output.pdf"
  end

这显然是从我不能正确理解的教程中获取的。我实际上可以很容易地在 java 中使用它,但我不想使用 jRuby。我正在使用运行良好的 rjb。我只是不认为我正确理解要使其正常工作需要发生什么。任何帮助是极大的赞赏!

4

2 回答 2

4

我是 pdf-stamper gem 的作者。

save_as方法将创建的 PDF 保存到文件系统。如果您正在构建 Rails 应用程序,我认为这不是您想要的。

我从您的问题中猜测您想将“加盖”PDF 发送回浏览器。如果是这种情况,您应该调用to_s创建的 PDF,然后将其输出传递给 Railssend_data方法。

在您的控制器(不是模型)中,您需要添加一些这样的代码。

def send 
    pdf = PDF::Stamper.new("sample.pdf") 
    pdf.text :nameFirst, "Jason"
    pdf.text :nameLast, "Yates" 
    send_data(pdf.to_s, :filename => "output.pdf", :type => "application/pdf",:disposition => "inline")
end    

这里的问题实际上是 pdf-stamper gem 的文档。您想要的功能只是没有记录在案,因此您感到困惑。我必须解决这个问题。

于 2012-11-01T06:55:13.560 回答
0

i was doing the same with use of xfdf as a source data for fields, the following code worked for me, maybe it will be helpful to you aswell:

  pdfreader = Rjb::import('com.itextpdf.text.pdf.PdfReader')
  pdfstamper = Rjb::import('com.itextpdf.text.pdf.PdfStamper')
  pdffields = Rjb::import('com.itextpdf.text.pdf.AcroFields')
  xfdfreader = Rjb::import('com.itextpdf.text.pdf.XfdfReader')


  pdf = pdfreader.new("#{Rails.root}/public/out/temp/form1.pdf", nil)
  xfdf = xfdfreader.new(f)

  stamp = pdfstamper.new(pdf, filestream.new("/tmp/text#{i}.pdf"))
  pdffields = stamp.getAcroFields()
  pdffields.setFields(xfdf)
  stamp.close
于 2012-01-31T23:25:59.527 回答