I have used AsciiDoc for my presentations ( and everything else I can shoehorn it into, such as this site ) for years. I had a workflow to build web page presentations with the slidy backend. At some point during the pandemic I played asciidoctor-pdf switched to it instead.

PDF has been great for online presentations, especially for conferences that use BigBlueButton ( BBB ). BBB was created for classroom use and you can upload PDFs to display the presentation from the server rather than as a live feed from the speaker’s home. I also use BBB for my local group. Same for some of the other local groups I’ve spoken at remotely. asciidoctor-pdf to pdf to BBB has been a great combo for me.

Until last week.

It was still working for some documents, but stopped building my SSH presentation. I need German versions of two talks for Kielux this coming weekend. SSH wouldn’t build in either language. Herzlichen Dank builds fine in the original English and in German.

I wrote a new talk for my local group last month and another new one for last week. Both build fine.

For some reason it won’t finish building my SSH presentation. The build process hangs. I don’t know what asciidoctor-pdf has against SSH. Perhaps SSH tunnels confuses it :).

After figuring out how to turn up debug and verbosity I got an error when I used <ctrl>-c to stop the build.

/usr/share/rubygems-integration/all/gems/pdf-core-0.8.1/lib/pdf/core/object_store.rb:96:in `object_id_for_page': undefined method `get_page_objects' for #<PDF::Core::ObjectStore:0x0000563f2a4f4e20> (NoMethodError)

El Googlé had zero results for that. After reducing the search to pdfcore undefined method get_page_objects I ran into a bug report from the ruby-asciidoctor-pdf debian package maintainer, Keith Packard. Thankfully Keith had provided a workaround even if the package isn’t yet fixed.

His workaround is to add a stub for the missing get_page_objects function.

  def get_page_objects(pages)
    pages.data
  end

Thankfully Keith had also mentioned '/usr/lib/ruby/vendor_ruby/prawn/document/internals.rb', so I backed up that file, then adeed his stub function to the end.

With the stub in place asciidoctor-pdf started rendering my SSH presentation again. Perhaps it is time for me to move my asciidoctor-pdf builds to a container.

Now I can concentrate on some fixes I want to make to the presentations as well as practicing them in German. I also need to update a couple presentations for SeaGL in November.

In any case, thanks to the asciidoctor and asciidoctor-pdf teams for creating, improving and maintaining a tool chain I use daily. Thanks also to Keith for packaging asciidoctor-pdf for debian, so it’s easy for me to use. I look forward to a fix in debian when they work out the logistics.