Chapter 1. PDF Based Solutions

Table of Contents

1.1 AxPoint
1.2 beamer
1.3 foiltex
1.4 HA-prosper
1.5 ifmslide
1.6 Ipe
1.7 KeyJnote
1.8 pdfscreen
1.9 PPower4 - P^4, PDF Presentation Post Processor
1.10 Prosper
1.11 rayslides
1.12 ReportLab / PythonPoint
1.13 seminar
1.14 slidenotes
1.15 slideshow
1.16 TeXPower
1.17 web

This chapter lists tools which generate PDF as their main output format. Some of them might be able to generate other output formats too (like PS).

1.1. AxPoint

1.1.1. General Description

AxPoint is a presentation making tool from the makers of Apache AxKit. It allows you to build beautiful presentations using a simple XML description format.

1.1.1.1. Example

Example 1.1. AxPoint Example

<?xml version="1.0"?>
<slideshow>

  <title>AxKit</title>
  <metadata>
     <speaker>Matt Sergeant</speaker>
     <email>matt@axkit.com</email>
     <organisation>AxKit.com Ltd</organisation>
     <link>http://axkit.com/</link>
     <logo scale="0.4">ax_logo.png</logo>
     <background>redbg.png</background>
  </metadata>

  <slide transition="dissolve">
    <title href="http://www.xml.com/">Introduction</title>
    <point level="1" href="http://xmlperl.com">Perl's XML Capabilities</point>
    <point level="1">A long bullet point line for testing the line
              wrapping capabilities which should make this look OK</point>
    <point level="1">AxKit static sites</point>
    <point level="1">AxKit dynamic sites (XSP)</point>
    <point level="1">Advanced <colour name="red">AxKit</colour></point>
    <source_code>
<color name="blue">Foo!</color>
    </source_code>
  </slide>

  <slide default-transition="replace">
    <title>Table Example</title>
    <table>
        <row>
            <col width="40%">
                <source-code>
Some code;
in the

++ first; # column

that {
  maybe we
  want to comment();
  on...
}
                </source-code>
                <point>and a point here...</point>
                <source-code>followed by more code</source-code>
                <point>and another point</point>
            </col>
            <col width="60%">
                <point>Notice how we did this...</point>
                <point>And how we can add stuff over here!</point>
                <source-code>include &lt;ing.h> //code</source-code>
            </col>
        </row>
    </table>
    <!-- Now some SVG! -->
    <rect x="100" y="100" width="50" height="100" style="stroke: black"/>
    <circle cx="50" cy="50" r="240"/>
    <ellipse cx="100" cy="50" rx="30" ry="60" style="fill: aqua; 
              stroke: red; stroke-width: 5"/>
    <text x="200" y="200" style="stroke: black; fill: none; 
              font: italic 24pt serif">A Cat</text>
  </slide>

  <slideset>
     <title>XML with Perl Introduction</title>

     <slide>
        <title>A very long <i>title that</i> should show how word
              <i>wrapping in the title</i> tag hopefully works 
              properly today</title>
        <point level="1">SAX-like API</point>
        <point level="1">register callback handler methods</point>
        <point level="2">start tag</point>
        <point level="2">end tag</point>
        <point level="2">characters</point>
        <point level="2">comments</point>
        <point level="2">processing instructions</point>
        <source_code>
<?pi here?>
        </source_code>
        <point level="2">... and more</point>
        <point level="1">Non validating XML parser</point>
        <point level="1">dies (throws an exception) on bad XML</point>
     </slide>
     
     <slide>
        <title>XML::Parser code</title>
        <source_code>
my $p = XML::Parser->new(
<i>    Handlers => { 
        Start => \&amp;start_tag, 
        End => \&amp;end_tag,
        # add more handlers here
        });
    </i>
$p->parsefile("foo.xml");

<color name="green">exit(0);</color>

sub start_tag {
  my ($expat, $tag, %attribs) = @_;
  print "Start tag: $tag\n";
}

sub end_tag {
  my ($expat, $tag) = @_;
  print "End tag: $tag\n";
}
        </source_code>
     </slide>
     
     <slide>
     <title>XML::XPath Implementation</title>
     <point level="1">XML::Parser and SAX parsers build an 
              in-memory tree</point>
     <point level="1">Hand-built parser for XPath syntax 
              (rather than YACC based parser)</point>
     <point level="1">Garbage Collection yet still has
              circular references (and works on Perl 5.005)</point>
     <image>pointers.png</image>
     </slide>
     
  </slideset>
  
  <slide>
  <title>Conclusions</title>
  <point level="1" transition="dissolve">Perl and XML are a
              powerful combination</point>
  <point level="1" transition="replace">XPath and XSLT add
              to the mix...</point>
  <point level="1" transition="glitter">AxKit can reduce your
              long term costs</point>
  <point level="2" transition="dissolve">In site re-design</point>
  <point level="2" transition="box">and in content re-purposing</point>
  <point level="1" transition="wipe">Open Source equal to
              commercial alternatives</point>
  <image transition="dissolve">world_map-960.png</image>
  </slide>
  
  <slide>
  <title>Resources and contact</title>
  <point level="1">AxKit: http://axkit.org/</point>
  <point level="1">CPAN: http://search.cpan.org</point>
  <point level="1">libxml and libxslt: http://www.xmlsoft.org</point>
  <point level="1">Sablotron: http://www.gingerall.com</point>
  <point level="1">XPath and XSLT Tutorials: http://zvon.org</point>
  </slide>
  
</slideshow>


See Figure 1.1, “AxPoint example”.

Figure 1.1. AxPoint example

AxPoint example


1.1.2. Requirements

1.1.2.1. Mandatory

  • XML::SAX (Perl module)

  • XML::SAX::Writer (Perl module)

  • pdflib version 4 (C library and Perl module)

  • PDFLib (Perl module)

1.1.3. Homepage

http://axpoint.axkit.org/ (last time checked: 2009-04-23)

1.1.4. Copyright and License

Copyright (c) 2001 Matt Sergeant

Artistic License or GPL