Das PDF Renderkit ist eine unabhängige Erweiterung für JSF, mit dem nahezu beliebige Web-Seiten als PDF gerendert werden können. Das PDF Renderkit basiert dabei auf Flying Saucer PDF und integriert diesen vollständig in den JSF Lifecycle.

Maven#

Das Artifact kann in der pom.xml eingebunden werden mit:
	<dependency>
		<groupId>com.intersult</groupId>
		<artifactId>pdf-renderkit</artifactId>
		<version>1.0-SNAPSHOT</version>
	</dependency>

Aus dem Intersult Repository:

	<repository>
		<id>intersult-repo</id>
		<name>Intersult Repository</name>
		<url>http://intersult.com/public/maven</url>
	</repository>

Anwendung#

Die einfachste Möglichkeit eine XHTML-Seite mit dem PDF Renderkit auszugeben, ist einen der URL das Renderkit hinzuzufügen:
http://localhost/test/faces/text.xhtml?javax.faces.RenderKitId=PDF

Möchte man einen derartigen Link erzeugen, kann man die Unterstützung von JSF verwenden. Hier zum Beispiel ein generischer PDF-Button (Request-URI):

<h:outputLink id="print" value="#{request.requestURI}">
	<f:param name="javax.faces.RenderKitId" value="PDF"/>
	<h:outputText value="PDF"/>
</h:outputLink>

Stylesheets und Images#

Da die PDF-Erzeugung die Stylesheets der Seite braucht, ist der Zugriff darauf sicherzustellen. Normaler Weise werden Stylesheets über den Request-URL gezogen, also relativ zur angefragten Seite. Aus Gründen wie Verschlüsselung, Session-Id, Sicherheit, Load-Balancer oder Reverse-Proxy kann es erforderlich sein, eine andere URL zu verwenden.

Dazu kann der GET-Parameter "print.pdf.baseURL" angegeben werden:

<h:outputLink id="print" value="#{request.requestURI}">
	<f:param name="javax.faces.RenderKitId" value="PDF"/>
	<f:param name="print.pdf.baseURL" value="http://localhost/test/"/>
	<h:outputText value="PDF"/>
</h:outputLink>