You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by "Toni Ruiz (JIRA)" <ji...@apache.org> on 2015/02/03 10:43:34 UTC

[jira] [Resolved] (FOP-2444) PDF corrupt using Apache FOP

     [ https://issues.apache.org/jira/browse/FOP-2444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Toni Ruiz resolved FOP-2444.
----------------------------
       Resolution: Fixed
    Fix Version/s: 1.0

I've just fixed it. I've upgraded Apache FOP version to 1.0 and it works now.


> PDF corrupt using Apache FOP
> ----------------------------
>
>                 Key: FOP-2444
>                 URL: https://issues.apache.org/jira/browse/FOP-2444
>             Project: Fop
>          Issue Type: Bug
>            Reporter: Toni Ruiz
>             Fix For: 1.0
>
>
> I am using Apache FOP 0.95 to generate a PDF file from a XSL file and when I open the generated PDF on Google Chrome it shows the content properly but when I try to open it with Acrobat Reader X (10.1.1.33) or with IE, I get this message:
> "An error exists on this page. Acrobat may not display the page correctly. Please contact the person who created the PDF document to correct the problem"
> If the pdf generated has more than one page, I can see all pages properly except the first page.
> My code to generate a PDF document:
>                 try
>                 {
>                     StreamSource source = new StreamSource(IOUtils.toInputStream(xmlPortaSignatura, "iso-8859-1"));
>                     StreamSource transformSource =  new StreamSource(IOUtils.toInputStream(xslfo.toString(), "iso-8859-1"));
>                     FopFactory fopFactory = FopFactory.newInstance();
>                     FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
>                     ByteArrayOutputStream outStream = new ByteArrayOutputStream();
>                     Transformer xslfoTransformer;
>                     TransformerFactory transfact = TransformerFactory.newInstance();
>                     xslfoTransformer = getTransformer(transformSource);
>                     // Construct fop with desired output format
>                     Fop fop;
>                     try
>                     {
>                         fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, outStream);
>                         // Resulting SAX events (the generated FO)
>                         // must be piped through to FOP
>                         Result res = new SAXResult(fop.getDefaultHandler());
>                         // Start XSLT transformation and FOP processing
>                         try
>                         {
>                             xslfoTransformer.transform(source, res);
>                             byte[] pdfBytes = outStream.toByteArray();
>                             response.setContentLength(pdfBytes.length);
>                             response.setContentType("application/pdf");
>                             response.addHeader("Content-Disposition",
>                                     "attachment;filename=actaPDF_"
>                                             +acta.getNumActaExam()+"_"
>                                             +acta.getNumVersionExam()+".pdf");
>                             response.getOutputStream().write(pdfBytes);
>                             response.getOutputStream().flush();
>                         }
>                         catch (TransformerException e) {
>                             request.setAttribute("errorActa", e.getMessage());
>                             log.error("TransformerException: "+e.getMessage());
>                             throw e;
>                         }
>                     }
>                     catch (FOPException e) {
>                         request.setAttribute("errorActa", e.getMessage());
>                         log.error("FOPException: "+e.getMessage());
>                         throw e;
>                     }
>                 }
>                 catch (TransformerConfigurationException e)
>                 {
>                     request.setAttribute("errorActa", e.getMessage());
>                     log.error("TransformerConfigurationException: "+e.getMessage());
>                     throw e;
>                 }
>                 catch (TransformerFactoryConfigurationError e)
>                 {
>                     request.setAttribute("errorActa", e.getMessage());
>                     log.error("TransformerFactoryConfigurationError: "+e.getMessage());
>                     throw e;
>                 }



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)