Hi all.
I transform a xml file and add FO vocabulary, generating a PDF with fop afterwards. Now that I got it work using xalan and fop from the command line I embedded both into a JSP and a bean following the example code from docs/examples/embedding.
The problem: When I generate the PDF with the JSP my fo:basic-links don't make it into the PDF. If I dump the FO DOM tree to a file and use fop from the commandline the links are present in the PDF.
Here is the code I use:
<!-- JSP Code -->
<%
byte[] result = null;
pdfHelper.FOPit( docAllInOne, "allInOne2FO.xsl" );
response.setContentType("application/pdf");
response.setContentLength(result.length);
response.getOutputStream().write(result);
response.getOutputStream().flush();
%>
/* Bean */ public byte[] FOPit( Document doc, String styleSheet ) {
XMLTransform tf = new XMLTransform();
if ( !tf.setStyleSheet( styleSheet ) ) return null; /* Transform the Document. */
DOMResult result = tf.process( doc );
if ( result == null ) return null;
/*
* allInOne_1.fo used with fop on the command line
* creates links in the PDF file.
*/
XMLWriter.debugToFile(
(Document)result.getNode(), "allInOne_1.fo" ); DocumentInputSource source = new DocumentInputSource();
source.setDocument( (Document)result.getNode() );ByteArrayOutputStream out = new ByteArrayOutputStream();
Hierarchy hierarchy = Hierarchy.getDefaultHierarchy();
Logger log = hierarchy.getLoggerFor("fop");
log.setPriority(Priority.DEBUG);
Driver driver = new Driver( source, out );
driver.setLogger( log );
driver.setRenderer(Driver.RENDER_PDF);
try {
driver.run();
}
catch ( Exception e ) { e.printStackTrace(); }return out.toByteArray();
} // end FOPit()
I'd be glad if someone could give me a hint where the reason for this behavior might be found.
Ralf
