Преобразуйте код jRuby в код Ruby - PullRequest
0 голосов
/ 15 сентября 2011

У меня есть этот код:

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 ]

2 голосов
/ 15 сентября 2011

Можно использовать библиотеки, такие как iText, из обычного Ruby через "RJB", мост Ruby-Java. Я не знаю правильной последовательности вызовов в RJB, чтобы это произошло, но это возможно, и я знаю, что это делают люди.

Альтернативой может быть использование библиотеки "prawn" с чистым Ruby, которая будет одинаково работать как на JRuby, так и на Ruby

0 голосов
/ 15 сентября 2011

Очевидно, что сайт rjb поможет с более подробной информацией RJB . К сожалению, я не думаю, что он охватывает все свои функции.

Я не думаю, что вы можете загружать целые пакеты в RJB, но, поскольку вы используете только несколько классов, вы можете выполнять отдельный импорт:

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

Я также думаю, что Rjb не имеет всех псевдонимов ярлыков для методов Java, поэтому вам может понадобиться setField вместо set_field или field =. Я не пользователь Rjb, но мне бы очень хотелось сотрудничать с Rjb, чтобы сделать наши два синтаксиса более совместимыми. [примечание: вы, возможно, захотите оспорить этот совет, когда настроите Rjb ... Я просто никогда не видел пример с ярлыками в них]

0 голосов
/ 15 сентября 2011

Если вы используете библиотеку Java, такую ​​как iText, то вы не сможете. Вам нужно изменить код, чтобы использовать другую библиотеку PDF, чтобы он работал в C Ruby.

...