You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-users@xmlgraphics.apache.org by Michael Tracey Zellmann <tr...@gmail.com> on 2007/11/02 00:42:58 UTC

getting FOP to work with Java using 0.94

I was using 0.93 successfully some time ago, and I have another
application to use,
so I downloaded 0.94.

I am using Java 1.5.0_11

I tried to set things up correctly, but the PDF I generated can't be
read by Adobe Reader 8. I get a message that the file has been damaged
and can't be repaired.

I have some code that reads a source document, builds an Fop from a
FopFactory using MimeConstants.MIME_PDF and an OutputStream. I build a
Transformer from a TransformerFactory using an XSLT file, get a
SAXResult from the fop, and then transform the source into the result.

I have tried a very simple style sheet but no success.

Can anyone help me understand what is wrong, or point me to a basic
example that will work with the new version?

Here is the code:


               DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
               DocumentBuilder db = null;
               Document input = null;
               try {
                       db = dbf.newDocumentBuilder();
                       input = db.parse(new
File("input/astruct/primitives/System.xml"));
               } catch (ParserConfigurationException e) { e.printStackTrace();
               } catch (SAXException e) { e.printStackTrace();
               } catch (IOException e) { e.printStackTrace(); }
               Source src = new DOMSource(input);
               FopFactory fopFactory = FopFactory.newInstance();
               OutputStream out = null;
               File outputDir = new File("output");
               File outputFile = new File(outputDir, "System.pdf");
               try {
                       out = new BufferedOutputStream(new
FileOutputStream(outputFile));
               } catch (FileNotFoundException e) {e.printStackTrace();}
               Fop fop = null;
               try {
                       fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
               } catch (FOPException e) { e.printStackTrace(); }
               File xsltFile = new File("xslt/module-fo.xslt");
               TransformerFactory trFactory = TransformerFactory.newInstance();
               Transformer transformer = null;
               try {
                       transformer = trFactory.newTransformer(new
StreamSource(xsltFile));
               } catch (TransformerConfigurationException e)
{e.printStackTrace();}
               Result res = null;
               try {
                       res = new SAXResult(fop.getDefaultHandler());
               } catch (FOPException e) { e.printStackTrace(); }
               try {
                       transformer.transform(src, res);
               } catch (TransformerException e) { e.printStackTrace();}

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: getting FOP to work with Java using 0.94

Posted by Michael Tracey Zellmann <tr...@gmail.com>.
Thanks.

closing the OutputStream fixed my problem, and your way of getting the
xml file is clearly better.

I used to get a Fop instance directly from the constructor, but that
is deprecated now, in favor of the FopFactory. That was the change I
had encountered.

On Nov 2, 2007 3:41 AM, Jeremias Maerki <de...@jeremias-maerki.ch> wrote:
> FOP's API hasn't changed. I don't remember any change in that area that
> could trigger this, but I could also be wrong. Anyway, what I'm missing
> in your code snippet is a try..finally around the code where the
> OutputStream is closed in the "finally" section. That omission is most
> likely the reason for the file corruption.
>
> As a side-note, it's inefficient to load the XML file as a DOM and then
> pass it to the XSL transformation. Please take a look at our examples
> and use a SAX-based approach:
> http://xmlgraphics.apache.org/fop/0.94/embedding.html#ExampleXML2PDF
>
> Jeremias Maerki
>
>
>
>
> On 02.11.2007 00:42:58 Michael Tracey Zellmann wrote:
> > I was using 0.93 successfully some time ago, and I have another
> > application to use,
> > so I downloaded 0.94.
> >
> > I am using Java 1.5.0_11
> >
> > I tried to set things up correctly, but the PDF I generated can't be
> > read by Adobe Reader 8. I get a message that the file has been damaged
> > and can't be repaired.
> >
> > I have some code that reads a source document, builds an Fop from a
> > FopFactory using MimeConstants.MIME_PDF and an OutputStream. I build a
> > Transformer from a TransformerFactory using an XSLT file, get a
> > SAXResult from the fop, and then transform the source into the result.
> >
> > I have tried a very simple style sheet but no success.
> >
> > Can anyone help me understand what is wrong, or point me to a basic
> > example that will work with the new version?
> >
> > Here is the code:
> >
> >
> >                DocumentBuilderFactory dbf =
> > DocumentBuilderFactory.newInstance();
> >                DocumentBuilder db = null;
> >                Document input = null;
> >                try {
> >                        db = dbf.newDocumentBuilder();
> >                        input = db.parse(new
> > File("input/astruct/primitives/System.xml"));
> >                } catch (ParserConfigurationException e) { e.printStackTrace();
> >                } catch (SAXException e) { e.printStackTrace();
> >                } catch (IOException e) { e.printStackTrace(); }
> >                Source src = new DOMSource(input);
> >                FopFactory fopFactory = FopFactory.newInstance();
> >                OutputStream out = null;
> >                File outputDir = new File("output");
> >                File outputFile = new File(outputDir, "System.pdf");
> >                try {
> >                        out = new BufferedOutputStream(new
> > FileOutputStream(outputFile));
> >                } catch (FileNotFoundException e) {e.printStackTrace();}
> >                Fop fop = null;
> >                try {
> >                        fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
> >                } catch (FOPException e) { e.printStackTrace(); }
> >                File xsltFile = new File("xslt/module-fo.xslt");
> >                TransformerFactory trFactory = TransformerFactory.newInstance();
> >                Transformer transformer = null;
> >                try {
> >                        transformer = trFactory.newTransformer(new
> > StreamSource(xsltFile));
> >                } catch (TransformerConfigurationException e)
> > {e.printStackTrace();}
> >                Result res = null;
> >                try {
> >                        res = new SAXResult(fop.getDefaultHandler());
> >                } catch (FOPException e) { e.printStackTrace(); }
> >                try {
> >                        transformer.transform(src, res);
> >                } catch (TransformerException e) { e.printStackTrace();}
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
> For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org


Re: getting FOP to work with Java using 0.94

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
FOP's API hasn't changed. I don't remember any change in that area that
could trigger this, but I could also be wrong. Anyway, what I'm missing
in your code snippet is a try..finally around the code where the
OutputStream is closed in the "finally" section. That omission is most
likely the reason for the file corruption.

As a side-note, it's inefficient to load the XML file as a DOM and then
pass it to the XSL transformation. Please take a look at our examples
and use a SAX-based approach:
http://xmlgraphics.apache.org/fop/0.94/embedding.html#ExampleXML2PDF

Jeremias Maerki



On 02.11.2007 00:42:58 Michael Tracey Zellmann wrote:
> I was using 0.93 successfully some time ago, and I have another
> application to use,
> so I downloaded 0.94.
> 
> I am using Java 1.5.0_11
> 
> I tried to set things up correctly, but the PDF I generated can't be
> read by Adobe Reader 8. I get a message that the file has been damaged
> and can't be repaired.
> 
> I have some code that reads a source document, builds an Fop from a
> FopFactory using MimeConstants.MIME_PDF and an OutputStream. I build a
> Transformer from a TransformerFactory using an XSLT file, get a
> SAXResult from the fop, and then transform the source into the result.
> 
> I have tried a very simple style sheet but no success.
> 
> Can anyone help me understand what is wrong, or point me to a basic
> example that will work with the new version?
> 
> Here is the code:
> 
> 
>                DocumentBuilderFactory dbf =
> DocumentBuilderFactory.newInstance();
>                DocumentBuilder db = null;
>                Document input = null;
>                try {
>                        db = dbf.newDocumentBuilder();
>                        input = db.parse(new
> File("input/astruct/primitives/System.xml"));
>                } catch (ParserConfigurationException e) { e.printStackTrace();
>                } catch (SAXException e) { e.printStackTrace();
>                } catch (IOException e) { e.printStackTrace(); }
>                Source src = new DOMSource(input);
>                FopFactory fopFactory = FopFactory.newInstance();
>                OutputStream out = null;
>                File outputDir = new File("output");
>                File outputFile = new File(outputDir, "System.pdf");
>                try {
>                        out = new BufferedOutputStream(new
> FileOutputStream(outputFile));
>                } catch (FileNotFoundException e) {e.printStackTrace();}
>                Fop fop = null;
>                try {
>                        fop = fopFactory.newFop(MimeConstants.MIME_PDF, out);
>                } catch (FOPException e) { e.printStackTrace(); }
>                File xsltFile = new File("xslt/module-fo.xslt");
>                TransformerFactory trFactory = TransformerFactory.newInstance();
>                Transformer transformer = null;
>                try {
>                        transformer = trFactory.newTransformer(new
> StreamSource(xsltFile));
>                } catch (TransformerConfigurationException e)
> {e.printStackTrace();}
>                Result res = null;
>                try {
>                        res = new SAXResult(fop.getDefaultHandler());
>                } catch (FOPException e) { e.printStackTrace(); }
>                try {
>                        transformer.transform(src, res);
>                } catch (TransformerException e) { e.printStackTrace();}
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: fop-users-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-users-help@xmlgraphics.apache.org