| PDF-Writer documentation | Contained in the PDF-Writer distribution. |
PDF::Writer - PDF writer abstraction layer
This document describes version 0.05 of PDF::Writer, released Oct 25, 2005.
use PDF::Writer; # Or, to explicitly specify a back-end ... use PDF::Writer 'pdflib'; use PDF::Writer 'pdfapi2'; use PDF::Writer 'mock'; my $writer = PDF::Writer->new;
This is a generalized API that allows a module that generates PDFs to transparently target multiple backends without changing its code. The currently supported backends are:
Available from CPAN
Available from http;//www.pdflib.com. There is both a pay and free version. PDF::Writer will work with both, within their limitations. Please see the appropriate documentation for details.
This allows modules that target PDF::Writer to write their tests against a mock interface. Please see PDF::Writer::mock for more information.
If both PDF::API2 and pdflib_pl are available, PDF::API2 is preferred. If neither is available, a run-time exception will be thrown. You must explicitly load the PDF::Writer::mock driver, if you wish to use it.
This acts as a factory, loading the appropriate PDF::Writer driver.
We use Devel::Cover to test the code coverage of our tests. Below is the Devel::Cover report on this module's test suite.
Originally written by:
Autrijus Tang <autrijus@autrijus.org>
Currently maintained by:
Rob Kinyon <rob.kinyon@iinteractive.com>
Stevan Little <stevan.little@iinteractive.com>
Thanks to Infinity Interactive for generously donating our time.
Copyright 2004, 2005 by Autrijus Tang <autrijus@autrijus.org>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| PDF-Writer documentation | Contained in the PDF-Writer distribution. |
package PDF::Writer; use strict; use warnings; our $VERSION = '0.06'; our $Backend; sub import { my $class = shift; $Backend = shift if @_; require "PDF/Writer/$Backend.pm" if $Backend && $Backend eq 'mock'; } sub new { my $class = shift; my $backend = $Backend || ( eval { require PDF::API2; 1 } ? 'pdfapi2' : eval { require pdflib_pl; 1 } ? 'pdflib' : undef ); if ($backend) { require "PDF/Writer/$backend.pm"; } else { die "No supported PDF backends found!"; } $class .= "::$backend"; return $class->new(@_); } 1; __END__