I am converting from HTML to XSL-FO and then to fop. If anybody has a
good way to do this I would like to know.
How do I convert the following fo2PDF method .20 fop calls to .94 fop
calls?
private static byte[] fo2PDF(Document foDocument) {
DocumentInputSource fopInputSource = new DocumentInputSource(
foDocument);
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
Logger log = new ConsoleLogger(ConsoleLogger.LEVEL_WARN);
Driver driver = new Driver(fopInputSource, out);
driver.setLogger(log);
driver.setRenderer(Driver.RENDER_PDF);
driver.run();
return out.toByteArray();
} catch (Exception ex) {
return null;
}
}
public static void main(String[] args) {
// open file
if (args.length != 2) {
System.out.println("Usage: Html2Pdf htmlFile
styleSheet");
System.exit(1);
}
FileInputStream input = null;
String htmlFileName = args[0];
try {
input = new
FileInputStream(htmlFileName);
}
catch (java.io.FileNotFoundException e) {
System.out.println("File not found: " +
htmlFileName);
}
Tidy tidy = new Tidy();
Document xmlDoc = tidy.parseDOM(input, null);
Document foDoc = xml2FO(xmlDoc, args[1]);
String pdfFileName = htmlFileName.substring(0,
htmlFileName.indexOf(".")) + ".pdf";
String xslFileName = htmlFileName.substring(0,
htmlFileName.indexOf(".")) + ".fo";
writeXmlFile(foDoc,xslFileName);
try {
OutputStream pdf = new FileOutputStream(new
File(pdfFileName));
OutputStream xsl = new FileOutputStream(new
File(xslFileName));
pdf.write(fo2PDF(foDoc));
}
catch (java.io.FileNotFoundException e) {
System.out.println("Error creating PDF: " +
pdfFileName);
}
catch (java.io.IOException e) {
System.out.println("Error writing PDF: " +
pdfFileName);
}
}
/*
* Applies stylesheet to input.
*
* @param xml The xml input Document
*
* @param stylesheet Name of the stylesheet
*
* @return Document Result of the transform
*/
private static Document xml2FO(Document xml, String styleSheet) {
DOMSource xmlDomSource = new DOMSource(xml);
DOMResult domResult = new DOMResult();
Transformer transformer = getTransformer(styleSheet);
if (transformer == null) {
System.out.println("Error creating transformer for "
+ styleSheet);
System.exit(1);
}
try {
transformer.transform(xmlDomSource, domResult);
}
catch (javax.xml.transform.TransformerException e) {
return null;
}
return (Document) domResult.getNode();
}