[ic] PDF generation in Interchange
Ethan Rowe
ethan at endpoint.com
Tue Jul 10 08:15:49 EDT 2007
On the freenode#interchange IRC channel yesterday, there was some
discussion on the topic of PDF generation, with Stefan Hornburg
suggesting that it would be good to have as a default feature in the
standard demo catalog for things like invoices. Since this particular
problem has been approached numerous times in various ways, I offered to
gather information from my coworkers at End Point to get a picture of
what solutions we've found and the pros/cons of each.
In recent years, we've generated PDFs in the following ways:
* Simple HTML generation within Interchange, then passed through HTMLDoc
(http://htmldoc.org) for conversion to PDF.
* Use Postscript::BasicTypeSetter to generate Postscript, then pass that
through Ghostscript to generate PDF as needed.
* Use PDF::API2 within custom Perl modules/routines
The reliance on HTMLDoc for HTML-to-PDF conversion has the benefit of
simplicity, but it's not particularly rich and effectively only offers
the level of sophistication of a version-3 browser. The
Postscript-based approach provides complete control over fonts,
positioning, etc., but was done some years before PDF::API2 was
available; it was a successful approach but doesn't seem likely to be
the most logical approach now. PDF::API2 is pretty comprehensive and
completely met our needs for the uses to which it was put; however, it's
relatively low level compared to the level most of us are accustomed to
working at when dealing with presentation/content, so it would hard to
offer a generic usertag that exposed the full richness of the PDF::API2
interface.
So, our collective suggestion on this topic: use PDF::API2, but perhaps
plan on making custom usertags per use case or something like that. It
may be possible to make a usertag that can handle a number of simple
tasks for PDF generation, but we'll always need to drop directly to Perl
in order to get particularly fancy.
Thanks.
- Ethan
--
Ethan Rowe
End Point Corporation
ethan at endpoint.com
More information about the interchange-users
mailing list