"Error: Icon font not found for set: fas" using asciidoctorj-pdf in OSGi environment

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

"Error: Icon font not found for set: fas" using asciidoctorj-pdf in OSGi environment

PartTimeDataScientist
Hi,

I am trying to use asciidoctorj and asciidoctorj-pdf in an OSGi environment (developing a plugin for an Eclipse application). Doing so I have troubles to get the font-awesome icons to be included into the rendered .pdf-file with the error: Execute failed: org.jruby.exceptions.StandardError: (UnknownFont) Icon font not found for set: fas

I am loading the gems as documented here. (Details below). The yml-stylesheet is loaded properly (using the code given below) from within the bundled plugin (verfied by changing a few colors and sizes) but I cannot get icons to render properly. I have already tried to set a custom pdf-fontsdir in a similar way as for the stylesheet without success.

Caused by: org.jruby.exceptions.StandardError: (UnknownFont) Icon font not found for set: fas
        at RUBY.path(uri:classloader:/gems/prawn-icon-2.5.0/lib/prawn/icon/font_data.rb:70)
        at RUBY.load_fonts(uri:classloader:/gems/prawn-icon-2.5.0/lib/prawn/icon/font_data.rb:61)
        at RUBY.initialize(uri:classloader:/gems/prawn-icon-2.5.0/lib/prawn/icon/font_data.rb:49)
        at RUBY.load(uri:classloader:/gems/prawn-icon-2.5.0/lib/prawn/icon/font_data.rb:20)
        at RUBY.initialize(uri:classloader:/gems/prawn-icon-2.5.0/lib/prawn/icon/interface.rb:187)
        at RUBY.make_icon(uri:classloader:/gems/prawn-icon-2.5.0/lib/prawn/icon/interface.rb:89)
        at RUBY.icon(uri:classloader:/gems/prawn-icon-2.5.0/lib/prawn/icon/interface.rb:66)
        at RUBY.convert_admonition(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:808)
        at RUBY.init_bounding_box(uri:classloader:/gems/prawn-2.2.2/lib/prawn/document/bounding_box.rb:196)
        at RUBY.bounding_box(uri:classloader:/gems/prawn-2.2.2/lib/prawn/document/bounding_box.rb:157)
        at RUBY.convert_admonition(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:797)
        at RUBY.float(uri:classloader:/gems/prawn-2.2.2/lib/prawn/document.rb:364)
        at RUBY.convert_admonition(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:796)
        at RUBY.pad_box(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/ext/prawn/extensions.rb:526)
        at RUBY.convert_admonition(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:777)
        at org.jruby.RubyBasicObject.instance_exec(org/jruby/RubyBasicObject.java:2680)
        at RUBY.keep_together(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/ext/prawn/extensions.rb:902)
        at RUBY.convert_admonition(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:774)
        at RUBY.convert(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:138)
        at RUBY.convert(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/abstract_block.rb:75)
        at RUBY.content(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/abstract_block.rb:84)
        at org.jruby.RubyArray.map(org/jruby/RubyArray.java:2580)
        at RUBY.content(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/abstract_block.rb:84)
        at RUBY.content(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/block.rb:111)
        at RUBY.traverse(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:155)
        at RUBY.convert_preamble(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:686)
        at RUBY.convert(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:138)
        at RUBY.convert(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/abstract_block.rb:75)
        at RUBY.content(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/abstract_block.rb:84)
        at org.jruby.RubyArray.map(org/jruby/RubyArray.java:2580)
        at RUBY.content(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/abstract_block.rb:84)
        at RUBY.content(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:1020)
        at RUBY.traverse(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:155)
        at RUBY.convert_document(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:267)
        at RUBY.indent_section(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:596)
        at RUBY.convert_document(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:214)
        at RUBY.convert(uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib/asciidoctor/pdf/converter.rb:138)
        at RUBY.convert(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/document.rb:951)
        at RUBY.convert(uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/convert.rb:118)

I don't know if this is helpful, but Process Monitor shows strange unsucessful tries to ruby files which shuld all be located somewhere in prawn-icon-2.5.0 which looks strange to me:
Strange file access tries

Sorry for the somewhat lengthy post but I wanted to include as much of the information that I thought could be helpful for debuging as possible.

Hope you can help me sorting this out.

Thanks in advance!
Lars

// "Supporting Information"
// Main code for referencing files included in bundled plugin
IPath stylesheetDir = new Path(File.separator + "pdf_themes");
IPath fontsfileDir = new Path(File.separator + "fonts");
IPath stylesheetFile = new Path(File.separator + "pdf_themes" + File.separator + "default-theme.yml");
                                               
Bundle pluginBundle = FrameworkUtil.getBundle( getClass() );
URL urlStylesheetDir = FileLocator.find(pluginBundle, stylesheetDir, null);
URL urlFontsDir = FileLocator.find(pluginBundle, fontsfileDir, null);
URL urlStylesheetFile = FileLocator.find(pluginBundle, stylesheetFile, null);
stylesDir = FileLocator.toFileURL(urlStylesheetDir);
fontsDir = FileLocator.toFileURL(urlFontsDir);
styleSheet = FileLocator.toFileURL(urlStylesheetFile);
                                       
AttributesBuilder attrs = attributes()
.attribute("pdf-stylesdir", stylesDir.getPath())
.attribute("pdf-style", "default-theme.yml")
.attribute("pdf-fontsdir", fontsDir.getPath())
.icons(org.asciidoctor.Attributes.FONT_ICONS)
.iconFontRemote(true)
.allowUriRead(true);

// Code block for loading the gems
Asciidoctor asciidoctor = create(Arrays.asList(
//gems from asciidoctorj 2.2.0
"uri:classloader:/gems/asciidoctor-2.0.10/lib",
"uri:classloader:/gems/tilt-2.0.9/lib",
"uri:classloader:/gems/thread_safe-0.3.6-java/lib",
"uri:classloader:/gems/temple-0.8.2/lib",
"uri:classloader:/gems/slim-4.0.1/lib",
"uri:classloader:/gems/rouge-3.12.0/lib",
"uri:classloader:/gems/open-uri-cached-0.0.5/lib",
"uri:classloader:/gems/haml-5.0.4/lib",
"uri:classloader:/gems/erubis-2.7.0/lib",
"uri:classloader:/gems/concurrent-ruby-1.0.5-java/lib",
"uri:classloader:/gems/coderay-1.1.2/lib",
"uri:classloader:/gems/asciidoctor-2.0.10/lib",

//gems from asciidoctorj-pdf
"uri:classloader:/gems/asciidoctor-pdf-1.5.3/lib",
"uri:classloader:/gems/ttfunk-1.5.1/lib",
"uri:classloader:/gems/treetop-1.6.10/lib",
"uri:classloader:/gems/thread_safe-0.3.6-java/lib",
"uri:classloader:/gems/text-hyphen-1.4.1/lib",
"uri:classloader:/gems/safe_yaml-1.0.5/lib",
"uri:classloader:/gems/ruby-rc4-0.1.5/lib",
"uri:classloader:/gems/rouge-3.16.0/lib",
"uri:classloader:/gems/rghost-0.9.7/lib",
"uri:classloader:/gems/public_suffix-1.4.6/lib",
"uri:classloader:/gems/prawn-templates-0.1.2/lib",
"uri:classloader:/gems/prawn-table-0.2.2/lib",
"uri:classloader:/gems/prawn-svg-0.30.0/lib",
"uri:classloader:/gems/prawn-icon-2.5.0/lib",
"uri:classloader:/gems/prawn-2.2.2/lib",
"uri:classloader:/gems/polyglot-0.3.5/lib",
"uri:classloader:/gems/pdf-reader-2.4.0/lib",
"uri:classloader:/gems/pdf-core-0.7.0/lib",
"uri:classloader:/gems/hashery-2.1.2/lib",
"uri:classloader:/gems/css_parser-1.7.1/lib",
"uri:classloader:/gems/concurrent-ruby-1.1.6/lib",
"uri:classloader:/gems/Ascii85-1.0.3/lib",
"uri:classloader:/gems/afm-0.2.2/lib",
"uri:classloader:/gems/addressable-2.4.0/lib"));