0

多くの検索を行ってきましたが、Rails アプリケーションで PDF スタンパーを機能させるための解決策が見つかりません。チュートリアルから、モデルにメソッドを書いているように見えますか? nameLast と nameFirst の 2 つのフィールドを持つ単純なアプリを作成しました。私がやりたいのは、ユーザー情報のフィールドを含む PDF にこれらを書き込むことだけです。2 つのフィールドがたまたま 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を使用しています。これを機能させるために何が必要かを正しく理解しているとは思いません。どんな助けでも大歓迎です!

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

私はフィールドのソースデータとして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
于 2012-01-31T23:25:59.527 に答える