blob: d57c01013efcf67dcd3405d4c3e830007024657a [file] [log] [blame]
<?xml version="1.0" encoding="iso-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<page
xmlns:cinclude="http://apache.org/cocoon/include/1.0"
>
<content>
<h2>Dynamic PDF generation</h2>
<p>
In this example we will generate a PDF document containing
text received in the HTTP request parameters.
</p>
<p>
To run the example, submit this form, after changing the provided
text if you want to:
<form method="get" action="../pdf-example/pdf-example.pdf">
<table width="100%">
<tr>
<td>Title</td>
<td><input name="title" size="60" value="Here's your title"/></td>
</tr>
<tr>
<td>Text</td>
<td>
<textarea style="width:100%" name="text">Most quick brown foxes like to jump over lazy dogs.</textarea>
</td>
</tr>
</table>
<input type="submit" value="Generate PDF"/>
</form>
<p>
If your browser has problems with PDF coming out of a form
submit use
<a href="../pdf-example/pdf-example.pdf?title=PDF+test&amp;text=Text+for+the+PDF+test">
this link
</a> instead.
</p>
</p>
<h2>The sitemap</h2>
<p>
The <em>FOPSerializer</em> requires a document in the <em>XSL-FO</em> vocabulary
for input, and converts this to PDF, handling fonts, page layout, etc.
</p>
<p>
Our sitemap will then apply an XSL transform to the output of the <em>RequestGenerator</em>
to convert it to XSL-FO, using request parameter values provided by the generator.
</p>
<p>
Errors in the XSL-FO document can happen when implementing such a transform, and to make
debugging easier we use a <em>view</em> in the sitemap, to access the intermediate
document before it is processed by the <em>FOPSerializer</em>.
</p>
<p>
Here are the view and pipeline definitions:
<cinclude:include element="xml-code" src="cocoon:/xml-element/multi-channel/sitemap.xmap/view"/>
<cinclude:include element="xml-code" src="cocoon:/xml-element/multi-channel/sitemap.xmap/pdf"/>
</p>
<p>
These definitions allow the intermediate XSL-FO document to be retrieved by adding the
<em>cocoon-view=xsl-fo</em> parameter at the end of the URL, for example:
<br/>
<a href="../pdf-example/pdf-example.pdf?title=PDF+test&amp;text=Text+for+the+PDF+test&amp;cocoon-view=xsl-fo">
../pdf-example/pdf-example.pdf?title=....&amp;cocoon-view=xsl-fo
</a>
</p>
<h2>XSL transformation</h2>
<p>
This transformation converts the <em>RequestGenerator</em> output in XSL-FO, inserting
the value of the <em>text</em> and <em>title</em> request parameters in the output document:
<cinclude:include element="xml-code" src="cocoon:/xml-element/multi-channel/pdf-example/pdf-example.xsl/main"/>
</p>
</content>
</page>