Man pages sections > man3 > Catalyst::View::PDF::Reuse

Catalyst::View::PDF::Reuse - Create PDF files from Catalyst using Template

Catalyst::View::PDF::Reuse(3pm) User Contributed Perl Documentation Catalyst::View::PDF::Reuse(3pm)


Catalyst::View::PDF::Reuse - Create PDF files from Catalyst using Template Toolkit templates


Create a PDF::Reuse view:
 script/ view PDF::Reuse PDF::Reuse
In, add a configuration item for the template include path:
 __PACKAGE__->config('View::PDF::Reuse' => {
   INCLUDE_PATH => __PACKAGE__->path_to('root','templates')
In your controller:
 $c->stash->{pdf_template} = '';
In root/templates/
 [% pdf.prFont('Helvetica-Bold') %]
 [% pdf.prFontSize(20) %]
 [% pdf.prText(100,100,'Hello, World!') %]


Catalyst::View::PDF::Reuse provides the facility to generate PDF files from a Catalyst application by embedding PDF::Reuse commands within a Template Toolkit template.

Template Syntax

Within your template you will have access to a "pdf" object which has methods corresponding to all of PDF::Reuse's functions.
For example, to print the text Hello, World at PDF coordinates 100,100, use the following directive in your template:
 [% pdf.prText(100,100,'Hello, World') %]
Data held in the stash can be printed as follows:
 $c->stash->{list} = ['one', 'two', 'three', 'four'];
 [% y = 500 %]
 [% FOREACH item IN list %]
   [% pdf.prText(100,y,item) %]
   [% y = y - 13 %]
 [% END %]
Formatting can be defined using the Template Toolkit format plugin:
 [% USE format %]
 [% currency = format('AX%.2f') %]
 [% pdf.prText(100,100,currency(10)) %]

Using existing PDF documents

The key benefit of PDF::Reuse is the ability to load an existing PDF file and use this as the basis for a new document.
For example, to produce receipts or shipping labels you could create a blank receipt in Microsoft Word, convert this to PDF, then use PDF::Reuse to add in details such as the order number and customer address.
 [% pdf.prForm('customer_receipt.pdf') %]
 [% pdf.prText(123,643,order.number) %]
 [% pdf.prText(299,643, %]
Note that the PDF document loaded by "pdf.prForm" must be in the same directory as your Template Toolkit template.



Render the PDF file, places the contents in "$c->response->body" and sets appropriate HTTP headers.
You should normally not need to use this method directly, instead forward to the PDF::Reuse view from your controller:
The filename and content disposition (inline or attachment) can be controlled by putting the following values in the stash:
 $c->stash->{pdf_disposition} = 'attachment';  # Default is 'inline'
 $c->stash->{pdf_filename}    = 'myfile.pdf';
If the PDF filename is not specified, it will be set to the last component of the URL path, appended with '.pdf'. For example, with a URL of <http://localhost/view/order/pdf/1234> the PDF filename would be set to 1234.pdf.


Renders the PDF file and returns the raw PDF data.
If you need to capture the PDF data, e.g. to store in a database or for emailing, call "render_pdf" as follows:
 my $pdf = $c->view("PDF::Reuse")->render_pdf($c);


Jon Allen,


Please report any bugs or feature requests to "bug-catalyst-view-pdf-reuse at", or through the web interface at <>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.
 perldoc Catalyst::View::PDF::Reuse
You can also look for information at:
RT: CPAN's request tracker <>
AnnoCPAN: Annotated CPAN documentation <>
CPAN Ratings <>
Search CPAN <>


Penny's Arcade Open Source - <> Copyright (C) 2009 Penny's Arcade Limited
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
2010-06-21 perl v5.14.2