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)