在Ruby代码中转换jRuby代码

时间:2011-09-15 16:44:15

标签: ruby jruby rjb

我有这段代码:

require 'java'
require 'iText-5.0.6.jar'

module Pdf
  include_package "com.itextpdf.text.pdf"
  include_package "java.io"

  def self.write
    reader = PdfReader.new('application.pdf');
    stamper = PdfStamper.new(reader, FileOutputStream.new('completed.pdf'))
    form = stamper.acro_fields
    puts "Form has these fields: #{form.fields.key_set.to_a}"
    form.set_field("some_zipcode_field", "94115")
    stamper.close
  end
end

Pdf.write
jRuby中的

,我希望使用Ruby

翻译为rjb

任何人都知道我该怎么做?

3 个答案:

答案 0 :(得分:2)

可以通过“RJB”(Ruby-Java桥)使用常规Ruby中的iText等库。我不知道RJB中的正确呼叫顺序是为了实现这一目标,但这是可能的,我知道有人这样做。

另一种方法是使用纯Ruby“prawn”库,它在JRuby和Ruby上都可以正常工作

答案 1 :(得分:0)

如果你正在使用像iText这样的Java库,那么你就不能。您需要修改代码以使用不同的PDF库,以使其在C Ruby中工作。

答案 2 :(得分:0)

显然,rjb网站将提供更具体的细节RJB。不幸的是,我不认为它涵盖了它的所有功能。

我认为你不能在RJB中加载整个软件包,但由于你只使用少数几个类,你可以单独导入:

JString = Rjb :: import('java.lang.String')

我还认为Rjb没有Java方法的所有快捷方式别名,因此您最终可能需要setField而不是set_field或field =。我不是Rjb用户,但我真的想与Rjb合作,使我们的两种语法更兼容。 [注意:当你设置Rjb时,你可能想挑战这个建议......我从来没有见过一个带有快捷方式的例子]