asciidoctor / asciidoctorj-pdf

AsciidoctorJ PDF bundles the Asciidoctor PDF RubyGem (asciidoctor-pdf) so it can be loaded into the JVM using JRuby.
Apache License 2.0
36 stars 17 forks source link

undefined method `encode' for nil:NilClass #11

Closed bannmann closed 6 years ago

bannmann commented 6 years ago

On a linux machine, trying to generate a PDF via Maven results in the following exception:

(NoMethodError) undefined method `encode' for nil:NilClass
        at RUBY.normalize_encoding(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/font/afm.rb:18)
        at RUBY.width_of(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font_metric_cache.rb:30)
        at RUBY.width_of_string(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:276)
        at RUBY.width_of(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:143)
        at RUBY.add_fragment_to_line(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/line_wrap.rb:104)
        at org.jruby.RubyArray.each(org/jruby/RubyArray.java:1613)
        at RUBY.add_fragment_to_line(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/line_wrap.rb:93)
        at RUBY.apply_font_settings_and_add_fragment_to_line(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/line_wrap.rb:78)
        at RUBY.apply_font_size(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/arranger.rb:253)
        at RUBY.apply_font_settings(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/arranger.rb:175)
        at RUBY.character_spacing(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/pdf-core-0.7.0/lib/pdf/core/text.rb:214)
        at RUBY.apply_font_settings(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/arranger.rb:166)
        at RUBY.apply_font_settings_and_add_fragment_to_line(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/line_wrap.rb:77)
        at RUBY.wrap_line(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/line_wrap.rb:47)
        at RUBY.wrap(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/wrap.rb:53)
        at RUBY.wrap(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/formatted_text/inline_image_arranger.rb:28)
        at RUBY.render(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/box.rb:226)
        at RUBY.font_size(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:101)
        at RUBY.font_size(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/extensions.rb:253)
        at RUBY.render(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/box.rb:219)
        at RUBY.text_rendering_mode(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-templates-0.1.1/lib/prawn/text.rb:19)
        at RUBY.render(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/box.rb:214)
        at RUBY.character_spacing(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/pdf-core-0.7.0/lib/pdf/core/text.rb:214)
        at RUBY.render(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/box.rb:213)
        at RUBY.save_font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:215)
        at RUBY.render(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text/formatted/box.rb:212)
        at RUBY.fill_formatted_text_box(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text.rb:380)
        at RUBY.formatted_text(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/text.rb:217)
        at RUBY.typeset_formatted_text(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:3048)
        at RUBY.convert_listing_or_literal(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:1396)
        at RUBY.pad_box(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/extensions.rb:473)
        at RUBY.convert_listing_or_literal(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:1393)
        at RUBY.theme_font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:2931)
        at RUBY.font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:62)
        at RUBY.save_font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:215)
        at RUBY.font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:60)
        at RUBY.font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/extensions.rb:196)
        at RUBY.theme_font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:2930)
        at RUBY.convert_listing_or_literal(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:1358)
        at org.jruby.RubyBasicObject.instance_exec(org/jruby/RubyBasicObject.java:1623)
        at RUBY.dry_run(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/extensions.rb:805)
        at RUBY.font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:62)
        at RUBY.save_font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:215)
        at RUBY.font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/prawn-2.2.2/lib/prawn/font.rb:60)
        at RUBY.font(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/extensions.rb:196)
        at RUBY.dry_run(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/extensions.rb:804)
        at RUBY.keep_together(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/prawn_ext/extensions.rb:821)
        at RUBY.convert_listing_or_literal(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:1356)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:118)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:70)
        at RUBY.content(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:79)
        at org.jruby.RubyArray.map(org/jruby/RubyArray.java:2414)
        at RUBY.content(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:79)
        at RUBY.convert_content_for_block(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:134)
        at RUBY.convert_section(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:426)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:118)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:70)
        at RUBY.content(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:79)
        at org.jruby.RubyArray.map(org/jruby/RubyArray.java:2414)
        at RUBY.content(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:79)
        at RUBY.convert_content_for_block(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:134)
        at RUBY.convert_section(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:426)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:118)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:70)
        at RUBY.content(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:79)
        at org.jruby.RubyArray.map(org/jruby/RubyArray.java:2414)
        at RUBY.content(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/abstract_block.rb:79)
        at RUBY.content(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/document.rb:1120)
        at RUBY.convert_content_for_block(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:134)
        at RUBY.convert_document(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:207)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-alpha.16/asciidoctorj-pdf-1.5.0-alpha.16.jar!/gems/asciidoctor-pdf-1.5.0.alpha.16/lib/asciidoctor-pdf/converter.rb:118)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/document.rb:1060)
        at RUBY.convert(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor.rb:1502)
        at RUBY.convert_file(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor.rb:1575)
        at org.jruby.RubyIO.open(org/jruby/RubyIO.java:1201)
        at RUBY.convert_file(/root/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor.rb:1575)
        at RUBY.convertFile(<script>:75)
        at org.jruby.gen.InterfaceImpl1463819294.convertFile(org/jruby/gen/InterfaceImpl1463819294.gen:13)

For reference, mvn dependency:resolve-plugins says:

[INFO] Plugin Resolved: asciidoctor-maven-plugin-1.5.6.jar
[INFO]     Plugin Dependency Resolved: jruby-complete-1.7.26.jar
[INFO]     Plugin Dependency Resolved: maven-plugin-api-2.0.jar
[INFO]     Plugin Dependency Resolved: maven-project-2.2.1.jar
[INFO]     Plugin Dependency Resolved: maven-filtering-3.1.1.jar
[INFO]     Plugin Dependency Resolved: plexus-interpolation-1.22.jar
[INFO]     Plugin Dependency Resolved: plexus-utils-3.0.23.jar
[INFO]     Plugin Dependency Resolved: asciidoctorj-1.5.6.jar
[INFO]     Plugin Dependency Resolved: netty-codec-http-4.0.38.Final.jar
[INFO]     Plugin Dependency Resolved: doxia-core-1.7.jar
[INFO]     Plugin Dependency Resolved: commons-io-2.4.jar
[INFO]     Plugin Dependency Resolved: doxia-module-xhtml-1.7.jar

Before that exception, I get warnings like this:

The following text could not be fully converted to the Windows-1252 character set:
| ◦

Can this be the cause? Note that the theme does not define any custom fonts (yet).

On Windows, I get similar warnings, but no exception.

The adoc files are saved as UTF-8.

robertpanzer commented 6 years ago

I don’t know if this is the problem, but for asciidoctorj-pdf you need a later version of JRuby. The version should of jruby-complete should be 9.1.12.0 or 9.1.8.0 if you also want to run on windows.

bannmann commented 6 years ago

Thanks a lot, using jruby-complete 9.1.8.0 indeed fixed the problem!

It feels messy that I can't rely on the transitive dependencies alone, but I guess this is caused by something along the lines of asciidoctorj or the maven plugin itself referencing that older version.