Early this summer, as penance for my sins, I was asked to put together a presentation for this year’s PDF Association Technical Conference introducing the topic of PDF Color.
Now I’m not going to talk about color (just yet) so much as what I did to gather up my materials and turn them into a PDF presentation file. The usual work flow is to use PowerPoint to create the presentation and save as PDF. Unfortunately, I didn’t think that my PDF ColorSpace experiment output would survive the trip through that meat-grinder.
Instead, I decide this was an opportunity for dog-fooding, and I dug out some IronPython code I’d put together to create a pillow-book (now residing in my wife’s nightstand), and extended it to add the functionality I wanted in my presentation. Now, understand that this code was never intended for production use much less to be exposed; lack of comments, warts and all. But it is the glue which tied my presentation together, so let’s discuss the highlights before discussing the other parts of the presentation in later articles.
The PDF Format has two features related to Presentations I wanted to try my hand at using: Transitions and Subpage Navigation. In Acrobat, you would specify Transitions via Tools->Document Processing-> Page Transitions. Or, if you want to roll your own like I did, then you look at section 8.3.3 of the PDF (v1.7) Reference, table 8.13 in particular. Sub-page Navigation, is also discussed in section 8.3.3, table 8.14 but I have no idea how you would specify it within Acrobat.
For Transitions, I extended my control file vocabulary to be able to add a particular type of transition to a page, as in the following examples:
which was then parsed and processed by the following code:
Sub-page Navigation was significantly less straightforward. The Idea was that you start by showing page with, say your first talking point, you talk a bit about it, you click to advance, and the second talking point is revealed, rinse-lather-repeat until you run out of talking points and then your next click to advance transitions you to the next page.
The code for the listicle command basically breaks up the input text file into separate paragraphs, added a bullet point (U+2712 Black Nib!) at the top left edge of the paragraph, putting everything into a Layer (Optional Content Group container) and then created the array of double-linked Navigation nodes to turn on the Layers in the right sequence.
This worked fine for me…until I got to the podium, which was completely covered with various pointer devices on top of which I placed my speaker notes, and I unintentionally end-up going back to the previous page and had to interrupt myself to click back to where I was supposed to be.
My speaker notes were also assembled with this code, and went through a bit of transition of its own. Initially, I had them assembled as a continuous concatenation in two columns of text, but I found in my first trial presentation that I quickly lost track of where I was in my notes, so I reworked them to have one page per ‘slide’ with the slide page imported and scaled down on the left side, and the notes on the right.
If I couldn’t fit my notes on the page at 18pts, then I was trying to say too much. I occasionally cheated and used 16pts for one slide. And 14pts for another. And, no surprise, I ran overtime. After my presentation, Joel remarked that I was trying to cram two semesters worth of Color Theory into a 35 minute presentation.
So in subsequent articles, I am going to be unpacking some of that information, and demonstrating the code which created the slides I assembled with this program.
To Be Continued…