Search in sources :

Example 6 with FOPException

use of org.apache.fop.apps.FOPException in project play-cookbook by spinscale.

the class RenderPDF method apply.

@Override
public void apply(Request request, Response response) {
    Template template = TemplateLoader.load(templateFile);
    response.setHeader("Content-Disposition", "inline; filename=\"" + request.actionMethod + ".pdf\"");
    setContentTypeIfNotSet(response, "application/pdf");
    try {
        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, response.out);
        Transformer transformer = tFactory.newTransformer();
        Scope.RenderArgs args = Scope.RenderArgs.current();
        String content = template.render(args.data);
        Source src = new StreamSource(IOUtils.toInputStream(content));
        javax.xml.transform.Result res = new SAXResult(fop.getDefaultHandler());
        transformer.transform(src, res);
    } catch (FOPException e) {
        Logger.error(e, "Error creating pdf");
    } catch (TransformerException e) {
        Logger.error(e, "Error creating pdf");
    }
}
Also used : Transformer(javax.xml.transform.Transformer) Fop(org.apache.fop.apps.Fop) StreamSource(javax.xml.transform.stream.StreamSource) StreamSource(javax.xml.transform.stream.StreamSource) Source(javax.xml.transform.Source) Template(play.templates.Template) FOPException(org.apache.fop.apps.FOPException) Scope(play.mvc.Scope) SAXResult(javax.xml.transform.sax.SAXResult) TransformerException(javax.xml.transform.TransformerException)

Example 7 with FOPException

use of org.apache.fop.apps.FOPException in project series-rest-api by 52North.

the class PDFReportGenerator method encodeAndWriteTo.

@Override
public void encodeAndWriteTo(DataCollection<Data<QuantityValue>> data, OutputStream stream) throws IoHandlerException {
    try {
        generateOutput(data);
        DefaultConfigurationBuilder cfgBuilder = new DefaultConfigurationBuilder();
        Configuration cfg = cfgBuilder.build(document.newInputStream());
        URI baseURI = new File(".").toURI();
        FopFactory fopFactory = new FopFactoryBuilder(baseURI).setConfiguration(cfg).build();
        final String mimeType = Constants.APPLICATION_PDF;
        Fop fop = fopFactory.newFop(mimeType, stream);
        // FopFactory fopFactory = FopFactory.newInstance(cfg);
        // Fop fop = fopFactory.newFop(APPLICATION_PDF.getMimeType(), stream);
        // FopFactory fopFactory = fopFactoryBuilder.build();
        // Fop fop = fopFactory.newFop(APPLICATION_PDF.getMimeType(), stream);
        // Create PDF via XSLT transformation
        TransformerFactory transFact = TransformerFactory.newInstance();
        StreamSource transformationRule = getTransforamtionRule();
        Transformer transformer = transFact.newTransformer(transformationRule);
        Source source = new StreamSource(document.newInputStream());
        Result result = new SAXResult(fop.getDefaultHandler());
        if (LOGGER.isDebugEnabled()) {
            try {
                File tempFile = File.createTempFile(TEMP_FILE_PREFIX, ".xml");
                StreamResult debugResult = new StreamResult(tempFile);
                transformer.transform(source, debugResult);
                String xslResult = XmlObject.Factory.parse(tempFile).xmlText();
                LOGGER.debug("xsl-fo input (locale '{}'): {}", i18n.getTwoDigitsLanguageCode(), xslResult);
            } catch (IOException | TransformerException | XmlException e) {
                LOGGER.error("Could not debug XSL result output!", e);
            }
        }
        // XXX debug, diagram is not embedded
        transformer.transform(source, result);
    } catch (FOPException e) {
        throw new IoParseException("Failed to create Formatting Object Processor (FOP)", e);
    } catch (ConfigurationException e) {
        throw new IoParseException("Failed to read config for Formatting Object Processor (FOP)", e);
    } catch (TransformerConfigurationException e) {
        throw new IoParseException("Invalid transform configuration. Inspect xslt!", e);
    } catch (TransformerException e) {
        throw new IoParseException("Could not generate PDF report!", e);
    }
}
Also used : IoParseException(org.n52.io.IoParseException) DefaultConfigurationBuilder(org.apache.fop.configuration.DefaultConfigurationBuilder) TransformerFactory(javax.xml.transform.TransformerFactory) Transformer(javax.xml.transform.Transformer) Configuration(org.apache.fop.configuration.Configuration) StreamResult(javax.xml.transform.stream.StreamResult) TransformerConfigurationException(javax.xml.transform.TransformerConfigurationException) Fop(org.apache.fop.apps.Fop) StreamSource(javax.xml.transform.stream.StreamSource) FopFactory(org.apache.fop.apps.FopFactory) IOException(java.io.IOException) URI(java.net.URI) StreamSource(javax.xml.transform.stream.StreamSource) Source(javax.xml.transform.Source) StreamResult(javax.xml.transform.stream.StreamResult) Result(javax.xml.transform.Result) SAXResult(javax.xml.transform.sax.SAXResult) FopFactoryBuilder(org.apache.fop.apps.FopFactoryBuilder) FOPException(org.apache.fop.apps.FOPException) SAXResult(javax.xml.transform.sax.SAXResult) ConfigurationException(org.apache.fop.configuration.ConfigurationException) TransformerConfigurationException(javax.xml.transform.TransformerConfigurationException) XmlException(org.apache.xmlbeans.XmlException) File(java.io.File) TransformerException(javax.xml.transform.TransformerException)

Example 8 with FOPException

use of org.apache.fop.apps.FOPException in project mycore by MyCoRe-Org.

the class MCRFoFormatterFOP method transform.

@Override
public void transform(MCRContent input, OutputStream out) throws TransformerException, IOException {
    try {
        final FOUserAgent userAgent = fopFactory.newFOUserAgent();
        userAgent.setProducer(MessageFormat.format("MyCoRe {0} ({1})", MCRCoreVersion.getCompleteVersion(), userAgent.getProducer()));
        final Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, userAgent, out);
        final Source src = input.getSource();
        final Result res = new SAXResult(fop.getDefaultHandler());
        Transformer transformer = getTransformerFactory().newTransformer();
        transformer.transform(src, res);
    } catch (FOPException e) {
        throw new TransformerException(e);
    } finally {
        out.close();
    }
}
Also used : Transformer(javax.xml.transform.Transformer) FOPException(org.apache.fop.apps.FOPException) SAXResult(javax.xml.transform.sax.SAXResult) FOUserAgent(org.apache.fop.apps.FOUserAgent) Fop(org.apache.fop.apps.Fop) Source(javax.xml.transform.Source) TransformerException(javax.xml.transform.TransformerException) Result(javax.xml.transform.Result) SAXResult(javax.xml.transform.sax.SAXResult)

Aggregations

FOPException (org.apache.fop.apps.FOPException)8 Transformer (javax.xml.transform.Transformer)6 TransformerException (javax.xml.transform.TransformerException)6 SAXResult (javax.xml.transform.sax.SAXResult)6 Fop (org.apache.fop.apps.Fop)6 IOException (java.io.IOException)5 Result (javax.xml.transform.Result)4 Source (javax.xml.transform.Source)4 TransformerFactory (javax.xml.transform.TransformerFactory)3 StreamSource (javax.xml.transform.stream.StreamSource)3 FopFactory (org.apache.fop.apps.FopFactory)3 File (java.io.File)2 TransformerConfigurationException (javax.xml.transform.TransformerConfigurationException)2 StreamResult (javax.xml.transform.stream.StreamResult)2 FOUserAgent (org.apache.fop.apps.FOUserAgent)2 FopFactoryBuilder (org.apache.fop.apps.FopFactoryBuilder)2 XmlException (org.apache.xmlbeans.XmlException)2 IoParseException (org.n52.io.IoParseException)2 Dimension (java.awt.Dimension)1 Font (java.awt.Font)1