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