View Javadoc

1   // $Id: PdfSerializer.java,v 1.4 2004/06/15 11:18:18 powerpete Exp $
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  }