hmeine / pdfdecanter

PDF-based presentation program
Apache License 2.0
1 stars 0 forks source link

============ PDF Decanter

This is a simple program optimized for PDF-based presentations. I mostly use it in conjunction with LaTeX-beamer_, but actually the source of the PDF is arbitrary (e.g. one may export slides as PDF from impress or the like, too).

I wrote this mainly for the following reasons:

  1. I am using the \pause-feature of LaTeX-beamer_, which lets stuff appear one-by-one. This works by generating multiple PDF pages per slide, i.e. each content frame is sub-divided into multiple animation frames. Common PDF readers will display ridiculous page numbers like "35 of 245" for a 20 minute presentation; I wanted PDF Decanter to recognize multiple PDF pages that belong together and be able to present an overview of the logical slides, with animation frames batched together.

  2. Although I like some(!) animated transitions, I find it highly irritating to see the logo of one PDF page leave the screen to the left, only to have it appear (on the next page) from the right again. PDF Decanter shall recognize and not animate content that does not change.

  3. Although possible, it is a real hassle to embed videos in PDF files. (And presentation then only works with – yuck – Adobe Acrobat Reader on Windows or OS X, while I normally use Linux.) I figured that if I wrote my own software, I could make it as easy as possible to embed videos or other (dynamic) custom content.

I have much more in mind than what is already implemented, but the current version should already work well for many presentations.

Other interesting features:

The name "PDF Decanter" stands for "PDF decomposer for animated transitions whose expedience rocks". (I am not too happy with the last part, but otherwise it more or less conveys the gist of the software. If you have a better suggestion, please tell me.) ;-)

Usage

Start PDF Decanter like this::

/pdf_decanter.py mypresentation.pdf This will render the PDF into images (requiring the ``pdftoppm``_ commandline program that usually comes with the ``poppler-utils`` package) and start the presentation. The rendering process takes a while, so the result will be cached. The following keys are available in **presentation mode** (fullscreen slide view): ======================== ============== Space, Right, PgDown Next slide Backspace, Left, PgUp Previous slide Home First Slide Tab Show overview ======================== ============== The following keybindings are **always** available (i.e. in both modes): ============== =================================================== 0-9 + Enter go to slide number # F, L jump to [F]irst / [L]ast frame state of current slide Shift-F Enter/leave [F]ullscreen mode Shift-Q [Q]uit (Shift-P Debugging: Toggle navigation visibility) ============== =================================================== In the **overview mode**, these are the keybindings: ================= ================================================= Enter, Tab, Space Back to presentation mode Cursor keys Move yellow slide cursor Home First Slide Shift-U [U]ncover all slides Shift-R [R]eset all slides to covered state (and go home) ================= ================================================= Using the mouse or touchpad is also possible and mostly self-explaining. It is worth noting that in presentation mode, all three mouse buttons (if available) are bound; normal left clicks advance frames, and middle button clicks go back (if available). Using the right mouse button, the overview can be brought up. Bugs and Limitations ==================== I am aware of a lot of bugs and limitations, and I will try to make this more transparent by filing `issues at GitHub `_. I tried to get to a working state and publish this as soon as possible, which means that right now: * Presentations with non-white background may not work as well. Unfinished / planned features: * Opacity animations should be recognized (leading to smaller file sizes and potentially better transition animations). * Elements overlapping header/footer should be supported and not lead to new slides. * Such elements could get a different transition than fade-in (e.g. zoom-in or the like). * Frame repeations after many pages (e.g. repeated outline slides) should also be recognized. (Again, this could lead to smaller files and better transitions between these slides.) * Zooming (e.g. to the original / increased resolution of embedded figures) * The slide numbers should (optionally) be displayed somewhere in order to make the "jump to slide" feature more useful. .. _LaTeX-beamer: https://bitbucket.org/rivanvx/beamer/overview .. _pdftoppm: http://poppler.freedesktop.org/