The PDF Stream plugin allows to transform a view into a PDF stream and return it as a result from Action.
Default supported views:
Starting from 2.0.0, HTML into PDF rendering is done by the openhtmltopdf library which uses the Apache PDFBox 2 to create PDF documents. Apache PDFBox 2 is an open source Java tool for working with PDF documents and it is published under the Apache License v2.0.
Upgraded to be compatible with Apache Struts 2.5
Switched to Java 7
Showcase application can be downloaded from the Maven Central Repository.
Download struts2-pdfstream-showcase
Found a bug or have a feature request? Create a new issue or submit a Pull Request.
If you have questions about how to use struts2-pdfstream-plugin create a new issue or ask a question on Stack Overflow.
Copy following jars into your classpath (WEB-INF/lib):
If you are using Maven, add this to your project POM:
<dependencies>
...
<dependency>
<groupId>com.amashchenko.struts2.pdfstream</groupId>
<artifactId>struts2-pdfstream-plugin</artifactId>
<version>2.0.0</version>
</dependency>
...
</dependencies>
If you intend to transform Apache Tiles definition additional jar must be included.
For the Apache Tiles support add the struts2-pdfstream-tiles.
<dependency>
<groupId>com.amashchenko.struts2.pdfstream</groupId>
<artifactId>struts2-pdfstream-tiles</artifactId>
<version>2.0.0</version>
</dependency>
pdfstream-default package or add pdfstream result type.pdfstream result type.<action name="jspToPdf">
<result type="pdfstream">
<param name="location">/WEB-INF/pages/example.jsp</param>
<param name="cssPaths">css/bootstrap.min.css, css/style.css</param>
<param name="contentDisposition">attachment;filename=jsppdf.pdf</param>
</result>
</action>
<action name="htmlToPdf">
<result type="pdfstream">
<param name="location">/WEB-INF/pages/example.html</param>
<param name="cssPaths">css/bootstrap.min.css, css/style.css</param>
<param name="contentDisposition">attachment;filename=htmlpdf.pdf</param>
</result>
</action>
<action name="tilesToPdf">
<result type="pdfstream">
<param name="location">example</param>
<param name="renderer">tiles</param>
<param name="contentDisposition">attachment;filename=tilespdf.pdf</param>
</result>
</action>
<action name="freemarkerToPdf">
<result type="pdfstream">
<param name="location">/WEB-INF/ftl/example.ftl</param>
<param name="renderer">freemarker</param>
<param name="cssPaths">css/bootstrap.min.css, css/style.css</param>
<param name="contentDisposition">attachment;filename=ftlpdf.pdf</param>
</result>
</action>
This plugin can be easily extended in order to add support for transforming other views (e.g. Velocity) into PDF.
Implement com.amashchenko.struts2.pdfstream.ViewRenderer interface.
Create bean definition in struts.xml or in struts-plugin.xml with type="com.amashchenko.struts2.pdfstream.ViewRenderer" and custom name.
<bean type="com.amashchenko.struts2.pdfstream.ViewRenderer"
class="some.package.CustomRenderer" name="customrenderer" />
Use pdfstream result with the renderer parameter set to the name of the bean you have defined.
<action name="customToPdf">
<result type="pdfstream">
<param name="location">example</param>
<param name="renderer">customrenderer</param>
</result>
</action>