1
2 package com.pnpconsult.zeiterfassung.pdf;
3
4 import java.io.OutputStream;
5
6 import javax.xml.transform.Result;
7 import javax.xml.transform.Source;
8 import javax.xml.transform.Templates;
9 import javax.xml.transform.TransformerConfigurationException;
10 import javax.xml.transform.TransformerException;
11 import javax.xml.transform.TransformerFactory;
12 import javax.xml.transform.sax.SAXResult;
13 import javax.xml.transform.stream.StreamSource;
14
15 import org.apache.avalon.framework.logger.Logger;
16 import org.apache.avalon.framework.logger.NullLogger;
17 import org.apache.commons.logging.Log;
18 import org.apache.commons.logging.LogFactory;
19 import org.apache.fop.apps.Driver;
20
21 import com.pnpconsult.zeiterfassung.util.FileUtils;
22
23 /***
24 * @author <a href="mailto:powerpete@users.sf.net">Moritz Petersen </a>
25 * @version $Id: PdfSerializer.java,v 1.4 2004/06/15 11:18:18 powerpete Exp $
26 */
27 public class PdfSerializer
28 {
29 private static final Log LOG = LogFactory.getLog(PdfSerializer.class);
30 private Templates templates;
31 private Logger logger;
32
33 public PdfSerializer()
34 {
35 TransformerFactory factory = TransformerFactory.newInstance();
36 try
37 {
38 templates = factory.newTemplates(new StreamSource(
39 FileUtils.toFileName(getClass(), "table2fo.xsl")));
40 }
41 catch (TransformerConfigurationException e)
42 {
43 LOG.fatal("Error while creating templates", e);
44 }
45
46 logger = new NullLogger();
47 }
48
49 public synchronized void serialize(Source source, OutputStream out)
50 throws TransformerException
51 {
52 Driver driver = new Driver();
53 driver.setLogger(logger);
54 driver.setRenderer(Driver.RENDER_PDF);
55 driver.setOutputStream(out);
56 Result result = new SAXResult(driver.getContentHandler());
57 templates.newTransformer().transform(source, result);
58 }
59 }