From rjb-users at rubyforge.org Thu Jan 25 14:33:46 2007 From: rjb-users at rubyforge.org (rjb-users at rubyforge.org) Date: Thu, 25 Jan 2007 14:33:46 -0500 Subject: [rjb-users] block issue Message-ID: <4cbfccd70701251133jcd4e460h6f9a14141830061b@mail.gmail.com> I'm getting an "unknown method name" error ONLY when I call the method inside a loop. RJB is version 1.0.3. Here is the code. Rjb::load('lib/itext-1.4.8.jar') class PDFStamper def initialize( fields = {} ) filestream = Rjb::import('java.io.FileOutputStream') acrofields = Rjb::import('com.lowagie.text.pdf.AcroFields') pdfreader = Rjb::import('com.lowagie.text.pdf.PdfReader') pdfstamper = Rjb::import('com.lowagie.text.pdf.PdfStamper') reader = pdfreader.new("template.pdf") stamp = pdfstamper.new( reader, filestream.new('ouput.pdf') ) form = stamp.getAcroFields() fields.each { |key, value| @form.setField( key, value ) } stamp.setFormFlattening(true) stamp.close end end If I run this code I'll get this error: >> pdf = PDFStamper.new( @template.attributes ) RuntimeError: Fail: unknown method name `setField' from ./script/../config/../config/../lib/pdf_stamper.rb:21:in `method_missing' from ./script/../config/../config/../lib/pdf_stamper.rb:21:in `initialize' from ./script/../config/../config/../lib/pdf_stamper.rb:20:in `initialize' from (irb):2 However if I replace the "fields.each {}" loop with simply form.setField( "some_field", "some_value"). It will work perfectly fine. To work around this in my code, I just manually set all the fields. However, I'm guessing other people may hit this problem. -- Jason Yates jaywhy at gmail.com From rjb-users at rubyforge.org Thu Jan 25 14:36:34 2007 From: rjb-users at rubyforge.org (rjb-users at rubyforge.org) Date: Thu, 25 Jan 2007 14:36:34 -0500 Subject: [rjb-users] block issue In-Reply-To: <4cbfccd70701251133jcd4e460h6f9a14141830061b@mail.gmail.com> References: <4cbfccd70701251133jcd4e460h6f9a14141830061b@mail.gmail.com> Message-ID: <4cbfccd70701251136h5f561e0fmdcdc78871dea7a7e@mail.gmail.com> > fields.each { |key, value| @form.setField( key, value ) } Whoops. Note the code above should be: fields.each { |key, value| form.setField( key, value ) } -- Jason Yates jaywhy at gmail.com From rjb-users at rubyforge.org Thu Jan 25 18:09:16 2007 From: rjb-users at rubyforge.org (rjb-users at rubyforge.org) Date: Thu, 25 Jan 2007 18:09:16 -0500 Subject: [rjb-users] block issue In-Reply-To: <4cbfccd70701251133jcd4e460h6f9a14141830061b@mail.gmail.com> References: <4cbfccd70701251133jcd4e460h6f9a14141830061b@mail.gmail.com> Message-ID: <4cbfccd70701251509m57c66424u9cb65409c2283a3a@mail.gmail.com> Sorry. False alarm. It was a type casting issue. The method "setField" needs a string and in the loop I sometimes was sending a integer as the value. On 1/25/07, Jason Yates wrote: > I'm getting an "unknown method name" error ONLY when I call the method > inside a loop. RJB is version 1.0.3. Here is the code. > > Rjb::load('lib/itext-1.4.8.jar') > class PDFStamper > def initialize( fields = {} ) > filestream = Rjb::import('java.io.FileOutputStream') > acrofields = Rjb::import('com.lowagie.text.pdf.AcroFields') > pdfreader = Rjb::import('com.lowagie.text.pdf.PdfReader') > pdfstamper = Rjb::import('com.lowagie.text.pdf.PdfStamper') > > reader = pdfreader.new("template.pdf") > stamp = pdfstamper.new( reader, filestream.new('ouput.pdf') ) > form = stamp.getAcroFields() > > fields.each { |key, value| @form.setField( key, value ) } > > stamp.setFormFlattening(true) > stamp.close > end > end > > If I run this code I'll get this error: > > >> pdf = PDFStamper.new( @template.attributes ) > RuntimeError: Fail: unknown method name `setField' > from ./script/../config/../config/../lib/pdf_stamper.rb:21:in > `method_missing' > from ./script/../config/../config/../lib/pdf_stamper.rb:21:in > `initialize' > from ./script/../config/../config/../lib/pdf_stamper.rb:20:in > `initialize' > from (irb):2 > > However if I replace the "fields.each {}" loop with simply > form.setField( "some_field", "some_value"). It will work perfectly > fine. > > To work around this in my code, I just manually set all the fields. > However, I'm guessing other people may hit this problem. > > -- > Jason Yates > jaywhy at gmail.com > -- Jason Yates jaywhy at gmail.com