Since the last release of my Pdf-Presenter-Console quite some time has passed. Therefore I am happy to announce the release of a brand new version 2.0. Quite a lot has changed in the code base of this project since the last time I blogged about it. I rewrote all of the internal rendering code, as a preparation to move over to Cairo in a future release, as well as to allow more sophisticated things like cache compression.
Most likely you are not interested in the tech-talk about what I changed, but what exactly will change for you as a user of the software. The most significant changes made are support for navigational links, a compressed prerendering cache and a new prerendering system making the process a lot smoother.
Navigational link support
PDF files allow links to be embedded into a document. These links may execute many different tasks. One of these tasks is to provide means to quickly jump to certain pages of the document itself. Most likely you have seen this feature in table of contents sections of PDF documents, where you may click onto a chapters name to directly jump it. In PDF presentations this feature can be useful to allow quick jumps between different sections or chapters of your presentation. If you are generating your presentations with Latex and Beamer all the needed links will be created automatically for you by default.
The new version of PDF-Presenter-Console supports these navigational links. If you hover a link with your mouse, either on the presenter or the presentation screen, your pointer will change to a hand symbol. A click to such a link will open the assigned presentation page on the presenter screen.
A lot of people complained about the memory consumption problems presentations with a lot of slides (>=100 pages) created. Such presentations could easily eat up to 1.5gb of memory to store the prerendered slides. On most current systems this isn't a big problem. Unfortunately there are a lot of people out there using their netbooks for presentations. Netbooks normally only have about 1gb of ram. By refactoring the way slides are rendered I have been able to compress prerendered slides before storing them in memory for later access. This way I was able to reduce the over all memory consumption of prerendered slides by about a factor of 30. That's right if your presentation took about 1.5gb of ram before it will now only need 50mb!
As always compression comes at a cost of speed. The new prerendering storage reduces prerendering times by about a factor of 2. The time to display a slide however didn't change noticeably. Therefore this trade off seems to be a good bargain.
The new compression is enabled by default. If you have enough ram, want the fastest possible rendering as well as display times, you may use the -z option on the commandline to disable the compression. This way the old uncompressed storage engine will be used.
New prerendering system
The prerendering system itself has been changed to allow for a lot smoother user interaction with the console, while slides are prerendered. Displaying slides is now prioritized over prerendering them. This should allow for faster slide changes, while the presentation is still being prepared.
Other changes to the console have been made as well. For a full list take a look at the changelog.
As Jakub Wilk
As always comments and suggestions as well as patches are very welcome. Use the comment function on this blog or contact me using email.
To report a bug you may either contact me directly or use the issue tracker on the github project page
Detailed changelog for version 2.0
- Complete rewrite of rendering system to allow more sophisticated actions.
- Changed license of the project from GPLv3 to GPLv2+ because of incompatibilities with Poppler. (Thanks to Jakub Wilk
and Barak A. Pearlmutter for pointing out this out).
- Implemented: Usage of left-/right mousebuttons for slide navigation.
- Implemented: Handling of navigational links inside of PDF files.
- Implemented: Abstraction to cache prerendered slides.
- Implemented: Compressed cache for prerendered slides.
- Implemented: Alternative way of executing the prerendering process to allow for smoother navigation while slides are generated.
- Implemented: Means to switch displays in single monitor mode as well as dual monitor mode
- Implemented: Disabled timer if a duration of 0 is provided
- Fixed: Build problems on Fedora 13 due to changed linking procedure
- Fixed: Slightly changed image data formats due to update of Gtk to Version 2.22 or higher.
- Implemented: Removed usage of deprecated Gdk.GC in favor of Cairo.