将jRuby代码转换为Ruby代码



我有这样的代码:

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

有人知道我该怎么做吗?

可以通过"RJB" (Ruby- java桥)从普通Ruby中使用iText等库。我不知道RJB中正确的调用顺序是什么,但这是可能的,我知道有人在这样做。

另一种选择是使用纯Ruby的"prawn"库,它在JRuby和Ruby

上的工作原理是一样的

如果您使用的是iText之类的Java库,那么您就不能。您需要修改代码以使用不同的PDF库,以便在C Ruby中工作。

显然,rjb站点将帮助您了解rjb的更多细节。遗憾的是,我认为它没有涵盖它的所有功能。

我不认为你可以在RJB中加载整个包,但是因为你只使用少量的类,你可以单独导入:

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

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

最新更新