3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.cdm
.print
.out
.pdf
;
14 import java
.io
.FileOutputStream
;
15 import java
.io
.InputStream
;
16 import java
.io
.OutputStream
;
18 import javax
.xml
.transform
.Result
;
19 import javax
.xml
.transform
.Transformer
;
20 import javax
.xml
.transform
.TransformerFactory
;
21 import javax
.xml
.transform
.sax
.SAXResult
;
22 import javax
.xml
.transform
.stream
.StreamSource
;
24 import org
.apache
.fop
.apps
.FOUserAgent
;
25 import org
.apache
.fop
.apps
.Fop
;
26 import org
.apache
.fop
.apps
.FopFactory
;
27 import org
.apache
.fop
.apps
.MimeConstants
;
28 import org
.apache
.log4j
.Logger
;
29 import org
.jdom
.Document
;
30 import org
.jdom
.transform
.JDOMSource
;
32 import eu
.etaxonomy
.cdm
.print
.NotificationMediator
;
33 import eu
.etaxonomy
.cdm
.print
.out
.AbstractPublishOutputModule
;
36 * This output module will create a <a href="http://www.adobe.com/products/acrobat/adobepdf.html">PDF</a> document
37 * with a predefined output for quick printing.
40 * @created Jul 20, 2010
43 public class PdfOutputModule
extends AbstractPublishOutputModule
{
44 private static final Logger logger
= Logger
45 .getLogger(PdfOutputModule
.class);
47 public static String STYLESHEET_RESOURCE_DEFAULT
= "/eu/etaxonomy/printpublisher/out/pdf/cdmToPdf.xsl";
51 * @see eu.etaxonomy.printpublisher.out.IPublishOutputModule#output(org.jdom.Document, java.io.File, eu.etaxonomy.printpublisher.NotificationMediator)
53 public void output(Document document
, File exportFolder
, NotificationMediator notificationMediator
) {
55 super.output(document
, exportFolder
, notificationMediator
);
59 // configure fopFactory as desired
60 FopFactory fopFactory
= FopFactory
.newInstance();
62 FOUserAgent foUserAgent
= fopFactory
.newFOUserAgent();
63 // configure foUserAgent as desired
67 String filePath
= getFilePath(exportFolder
);
68 OutputStream out
= new FileOutputStream(filePath
);
69 out
= new java
.io
.BufferedOutputStream(out
);
73 // Construct fop with desired output format
74 Fop fop
= fopFactory
.newFop(MimeConstants
.MIME_PDF
, foUserAgent
, out
);
77 InputStream xslt
= PdfOutputModule
.class.getResourceAsStream(STYLESHEET_RESOURCE_DEFAULT
);
78 TransformerFactory factory
= TransformerFactory
.newInstance();
79 Transformer transformer
= factory
.newTransformer(new StreamSource(xslt
));
81 // Setup input for XSLT transformation
82 JDOMSource source
= new JDOMSource(document
);
84 // Resulting SAX events (the generated FO) must be piped through to FOP
85 Result result
= new SAXResult(fop
.getDefaultHandler());
87 // Start XSLT transformation and FOP processing
88 transformer
.transform(source
, result
);
91 logger
.info("PDF file created: " + filePath
);
94 }catch (Exception e
) {
95 logger
.error("Could not generate document", e
);
99 public String
getOutputFileSuffix() {