PDF::FromHTML::Template - PDF::FromHTML::Template |
PDF::FromHTML::Template - PDF::FromHTML::Template
use PDF::FromHTML::Template;
my $pdf = PDF::FromHTML::Template->new({ file => 'some_template.xml', });
$pdf->param(%my_params);
print "Content/type: application/pdf\n\n", $pdf->get_buffer;
$pdf->write_file('some_file.pdf');
NOTE: This is a fork of the PDF::Template manpage 0.30, originally released by Rob Kinyon, but (as of September 11, 2006) currently not available on CPAN. Use of this module outside the PDF::FromHTML manpage is not advised.
PDF::FromHTML::Template is a PDF layout system that uses the same data structures as the HTML::Template manpage.
PDF::FromHTML::Template is a PDF layout system that uses the same data structures as the HTML::Template manpage. Unlike the HTML::Template manpage, this is a full layout system. This means you will have to describe where each item will be on the page. (This is in contrast to the HTML::Template manpage, which adds on to the HTML::Template manpageut is determined by the HTML, not the HTML::Template manpage.)
PDF::FromHTML::Template uses an XML document as the template. However, the XML is not completely compliant. The only difference (that I'm aware of) is that any node can have any parameter. (This prevents the creation of a DTD.) The reason for this is to allow scoping by parents for parameters used by children. (More on this later.)
Each node in the document corresponds to an object, with each parameter mapping (mostly) 1 to 1 to an object attribute. Parent-child relationships are strictly preserved. Each parent provides a scope (similar to variable scope) to its children. (This is why any node can have any parameter.) If a child needs the value of a parameter and it doesn't have that value as an attribute, it will ask its parent for the value. If the parent doesn't have it, it will ask its parent, and so on.
new( [$opts] )
parse()
will be called upon that filename/filehandle. Otherwise,
after new()
is called, you will have to call parse()
yourself.
filename is a synonym for file.
The following keys are not supported:
parse( $file )
datastructure(s)
needed
for PDF::FromHTML::Template to function.
parse_xml( $file )
parse()
.
param( key =
value, [ key => value, ... ] )>write_file( $filename )
get_buffer()
output()
get_buffer()
provided for HTML::Template
compatibility.
register( ... )
There are a few consistency rules that that every PDF::FromHTML::Template has to follow:
For more information about each node, please see the POD for that class.
When taking an HTML page and adding a PDF option, there are a few differences to take into account. The primary one is the idea of pagebreaks. HTML is displayed as a single page, with scrolling. Paper doesn't scroll, so when there should be a new page is something PDF::FromHTML::Template works very hard at determining. It will take into account any header and footer information you've provided, as well as page sizes.
The second is that you have to determine how wide you want your text to be. One of the most common activities is to take a tabular report and covert it to a PDF. In HTML, the browser handles text width for you. Right now, there isn't a TABLE tag (though work is being done on it). So, you have to layout out your TEXTBOX nodes by hand. (See the EXAMPLES for some ideas on this.) That said, it really isn't that hard. TR/TH tags convert to ROW tags easily, and TD tags are basically TEXTBOX tags. Add a few width=``20%'' (or whatever) and you're fine.
None, that I'm aware of.
Currently, the only PDF renderer PDF::FromHTML::Template supports is PDFlib (available at www.pdflib.com). The next release of PDF::FromHTML::Template will also support PDF::API2. Unless you need Unicode support, PDFlib Lite is sufficient (and free). Please see http://www.pdflib.com for more details.
I am aware that PDFlib will not compile under AIX or Cygwin. These are problems that PDFlib has acknowledged to me.
Originally written by Dave Ferrance (dave@ferrance.org)
Taken over after v0.05 by Rob Kinyon (rob.kinyon@iinteractive.com)
Patches and ideas provided by:
Additionally, there is a mailing list at http://groups.google.com/group/PDFTemplate
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
perl(1).
PDF::FromHTML::Template - PDF::FromHTML::Template |