Hi Alan,
as far as I remember the stylesheets for pdf-generation have moved from
core into the pdf-output-plugin.
So you may be looking at outdated style sheets. Which might also explain
the errors you are getting (some changes were required in the
transformations to accomodate that last fop-update).
Check out
plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets for
the current stylesheets (from head).
After using Forrest with the pdf-plugin for the first time, you will
also find the stylesheets in
build/plugins/org.apache.forrest.plugin.output.pdf/resources/stylesheets.
Yet I agree with Brian, these style sheets were designed to be used in a
pipeline, so you may have to make some major adjustments.
Regards,
Ferdinand Soethe
Am 06.07.10 06:27, schrieb Alan Wang:
Hi All,
I am writing a program similar to pdf output plugin to convert xdoc
pages in xml document ( xdoc similar to
http://xmlgraphics.apache.org/fop/index.xml), and would like to
generate the pdf output using fop (0.95 on Mac os 10.5) as shown in
the following. However I am getting the following errors from console.
(Location of error unknown)org.apache.fop.fo.ValidationException:
Error(Unknown location): For fo:simple-page-master, fo:region-body
must be declared before fo:region-before.
1. Where can I find the xsl to convert from xdoc to fo. I find one
from apache forrest
distribution( apache-forrest-0.8/main/webapp/skins/common/xslt/fo/document-to-fo.xsl)?
Or Am I using the wrong one for converting from xdoc to fo?
2. Is anything wrong with my code?
Regards,
Alan
========================================================
public class fop {
public static void main(String[] args) throws Exception {
// configure fopFactory as desired
FopFactory fopFactory = FopFactory.newInstance();
fopFactory.setStrictValidation(false);
fopFactory.setStrictUserConfigValidation(false);
// configure foUserAgent as desired
FOUserAgent foUserAgent = fopFactory.newFOUserAgent();
// Setup output
OutputStream out = new java.io.FileOutputStream(new
File("mypdf.pdf"));
out = new java.io.BufferedOutputStream(out);
// Construct fop with desired output format
Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF,
foUserAgent, out);
// Setup XSLT
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(new StreamSource(new
File("/Downloads/apache-forrest-0.8/main/webapp/skins/common/xslt/fo/document-to-fo.xsl")));
// Set the value of a <param> in the stylesheet
transformer.setParameter("versionParam", "2.0");
// Setup input for XSLT transformation
Source src = new
StreamSource("http://xmlgraphics.apache.org/fop/index.xml");
// Resulting SAX events (the generated FO) must be piped
through to FOP
Result res = new SAXResult(fop.getDefaultHandler());
// Start XSLT transformation and FOP processing
transformer.transform(src, res);
out.close();
}
}