The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

AxPoint - An AxKit PDF Slideshow generator

SYNOPSIS

  AxAddStyleMap application/x-axpoint Apache::AxKit::Language::AxPoint
  
  AxAddRootProcessor application/x-axpoint NULL slideshow

DESCRIPTION

I got sick of not being able to do pretty slideshows about AxKit without resorting to the bloated OpenOffice. So I decided to write something that allows you to do simple slideshows with bullet points and a few other niceties using XML, AxKit, and rendering to PDF.

I discovered that PDF can do transitions, and full screen mode (even on Linux), and so it makes the perfect medium for doing a slideshow.

Note: This module requires PDFLib.pm from CPAN. It also requires the library pdflib, which is available under the Alladin license from http://www.pdflib.com/. The Alladin license does not allow re-distribution of modified binaries, so it is not strictly open source, but it is free to use even for commercial use.

Usage

The SYNOPSIS section describes how to set this thing up in AxKit, so here I will focus on the syntax of AxPoint XML files. I tend to use the suffix ".axp" for my AxPoint files, but you are free to use whatever you please.

The easiest way to describe all the features is with a complete presentation first:

  <slideshow transition="glitter">
    <title>AxPoint Example</title>
    <metadata>
      <speaker>Matt Sergeant</speaker>
      <email>matt@axkit.com</email>
      <organisation>AxKit.com Ltd</organisation>
      <link>http://axkit.com/</link>
      <logo>ax_logo.png</logo>
      <background>bg.png</background>
    </metadata>
    
    <slide transition="dissolve">
      <title>Top Level Slide</title>
      <point>This is a top level slide</point>
      <point>It is a child of the &lt;slideshow> tag</point>
      <point>Can have it's own transition</point>
    </slide>
    
    <slideset transition="blinds">
      <title>Slidesets</title>
      <subtitle>Slidesets can have subtitles</subtitle>
      
      <slide>
        <title>Slideset Example</title>
        <point>A slideset groups slides under a particular title</point>
        <point>Slidesets can have a transition for the group of slides</point>
      </slide>
    </slideset>
    
    <slideset>
      <title>Slide Tags</title>
      
      <slide>
        <title>Bullet Points</title>
        <point>Level 1 bullet : &lt;point></point>
        <point level="1">Another Level 1 bullet : &lt;point level="1"></point>
        <point level="2">Level 2 bullet : &lt;point level="2"></point>
        <point level="3">Level 3 bullet : &lt;point level="3"></point>
        <point>Back to level 1</point>
      </slide>
      
      <slide>
        <title>Source Core</title>
        <source_code><![CDATA[
Source code
uses   fixed       font
Don't forget to use CDATA sections so you can
 <include/><some/><xml/>
        ]]></source_code>
      </slide>
      
      <slide>
        <title>Pictures</title>
        <point>Images are very simple, and always centered</point>
        <image scale="0.5" href="file_large.jpg">file.jpg</image>
      </slide>
      
    </slideset>
    
    <slideset transition="dissolve">
      <title href="http://foo.bar/aslidesettitle">Slideset titles can have href attributes</title>
      <subtitle href="http://foo.bar/aslidesetsubtitle">Slideset subtitles too</subtitle>
      
      <slide>
        <title href="http://foo.bar/aslidetitle">Don't forget links for slide titles</title>
        <point href="http://foo.bar/apoint">...and for points of various levels</point>
      </slide>
    </slideset>
    
    
  </slideshow>

It's not very complex. And with good reason: generating PDFs can be slow. With this simple schema we can generate a 100 slide PDF in about 1 second. There are many deficiencies with the tagset, most significantly that no bold or italics or any coloring can be applied to the text by using tags. The reason being that this is quite hard to do with PDFLib - you have to do text measurement yourself and do the word-wrapping yourself, and so on. The way it is setup right now is very simple to use and implement.

AUTHOR

Matt Sergeant, matt@axkit.com