---
name: "Catalyst::View::PDF::Reuse"
section: "3pm"
platform: "linux"
package: "libcatalyst-view-pdf-reuse-perl"
version: "0.4-2.1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Catalyst::View::PDF::Reuse"
---

# Catalyst::View::PDF::Reuse(3pm)

Create PDF files from Catalyst using Template Toolkit templates

## NAME

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

## SYNOPSIS

Create a PDF::Reuse view:

```
 script/myapp_create.pl view PDF::Reuse PDF::Reuse
```

In MyApp.pm, 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} = 'hello_pdf.tt';
 $c->forward('View::PDF::Reuse');
```

In *root/templates/hello\_pdf.tt*:

```
 [% pdf.prFont('Helvetica-Bold') %]
 [% pdf.prFontSize(20) %]
 [% pdf.prText(100,100,'Hello, World!') %]
```

## DESCRIPTION

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('£%.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,order.date) %]
```

Note that the PDF document loaded by `"pdf.prForm"` must be in the same directory as your Template Toolkit template.

## FUNCTIONS

### process

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:

```
 $c->forward('View::PDF::Reuse');
```

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*.

### render\_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);
```

## AUTHOR

Jon Allen, jj@jonallen.info

## BUGS

Please report any bugs or feature requests to `"bug-catalyst-view-pdf-reuse at rt.cpan.org"`, or through the web interface at \<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Catalyst-View-PDF-Reuse\>.  I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

## SUPPORT

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

  \<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Catalyst-View-PDF-Reuse\>

- •

  AnnoCPAN: Annotated CPAN documentation

  \<http://annocpan.org/dist/Catalyst-View-PDF-Reuse\>

- •

  CPAN Ratings

  \<http://cpanratings.perl.org/d/Catalyst-View-PDF-Reuse\>

- •

  Search CPAN

  \<http://search.cpan.org/dist/Catalyst-View-PDF-Reuse\>

## SEE ALSO

PDF::Reuse

Penny's Arcade Open Source - \<http://www.pennysarcade.co.uk/opensource\>

## COPYRIGHT & LICENSE

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.

## POD ERRORS

Hey! **The above document had some coding errors, which are explained below:**

- Around line 73:

  Non-ASCII character seen before =encoding in 'format('£%.2f')'. Assuming UTF-8
