我做了很多搜索,找不到让我的rails应用程序中的PDF压模工作的解决方案。从教程中可以看出我在模型中编写了一个方法?我写了一个简单的应用程序,有两个字段:nameLast和nameFirst。我想要做的就是将这些写入包含用户信息字段的PDF。两个字段碰巧是FirstName和LastName所以完美的时间使用PDF压模吧?我只想从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。我只是觉得我没有正确理解需要做些什么来实现这个目标。非常感谢任何帮助!
答案 0 :(得分:4)
我是pdf-stamper gem的作者。
save_as
方法将创建的PDF保存到文件系统。如果您正在构建Rails应用程序,我认为这不是您想要的。
我猜你想要发送一个"盖章" PDF回到浏览器。如果是这种情况,您应该在创建的PDF上调用to_s
,然后将其输出传递给Rails send_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的文档。你想要的功能只是没有记录,因此你的困惑。我必须解决这个问题。
答案 1 :(得分:0)
我使用xfdf作为字段的源数据也是如此,以下代码对我有用,也许它对你有帮助:
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