Modify FOP

This commit is contained in:
DOHA 2014-12-07 20:39:09 +02:00
parent 337fe0b678
commit 0c02e6ba4e

View File

@ -16,8 +16,9 @@ import javax.xml.transform.Result;
import javax.xml.transform.Source; import javax.xml.transform.Source;
import javax.xml.transform.Transformer; import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory; import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.sax.SAXResult; import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource; import javax.xml.transform.stream.StreamSource;
import org.apache.fop.apps.Fop; import org.apache.fop.apps.Fop;
@ -27,6 +28,7 @@ import org.dbdoclet.trafo.TrafoScriptManager;
import org.dbdoclet.trafo.html.docbook.DocBookTransformer; import org.dbdoclet.trafo.html.docbook.DocBookTransformer;
import org.dbdoclet.trafo.script.Script; import org.dbdoclet.trafo.script.Script;
import org.junit.Test; import org.junit.Test;
import org.w3c.dom.Document;
public class ApacheFOPHeroldTest { public class ApacheFOPHeroldTest {
private String[] inputUrls = {// @formatter:off private String[] inputUrls = {// @formatter:off
@ -49,7 +51,6 @@ public class ApacheFOPHeroldTest {
private String style_file = "src/test/resources/docbook-xsl/fo/docbook.xsl"; private String style_file = "src/test/resources/docbook-xsl/fo/docbook.xsl";
private String output_file = "src/test/resources/final_output.pdf"; private String output_file = "src/test/resources/final_output.pdf";
private String fo_file = "src/test/resources/fofile.fo";
private String xmlInput = "src/test/resources/input.xml"; private String xmlInput = "src/test/resources/input.xml";
private String xmlOutput = "src/test/resources/output.xml"; private String xmlOutput = "src/test/resources/output.xml";
@ -61,8 +62,8 @@ public class ApacheFOPHeroldTest {
fromHTMLTOXMLUsingHerold(inputUrls[i], true); fromHTMLTOXMLUsingHerold(inputUrls[i], true);
} }
fixXML(xmlInput, xmlOutput); fixXML(xmlInput, xmlOutput);
fromXMLFileToFO(); final Document fo = fromXMLFileToFO();
fromFODocumentToPDF(output_file); fromFODocumentToPDF(fo, output_file);
} }
// UTIL // UTIL
@ -78,22 +79,22 @@ public class ApacheFOPHeroldTest {
transformer.convert(getInputStream(input), new FileOutputStream(xmlInput ,append)); transformer.convert(getInputStream(input), new FileOutputStream(xmlInput ,append));
} }
private void fromXMLFileToFO() throws Exception { private Document fromXMLFileToFO() throws Exception {
final Source source = new StreamSource(new FileInputStream(xmlOutput)); final Source source = new StreamSource(new FileInputStream(xmlOutput));
final StreamResult result = new StreamResult(new FileOutputStream(fo_file)); final DOMResult result = new DOMResult();
final Transformer transformer = createTransformer(style_file); final Transformer transformer = createTransformer(style_file);
transformer.transform(source, result); transformer.transform(source, result);
// return (Document) result.getNode(); return (Document) result.getNode();
} }
private void fromFODocumentToPDF(final String outputFile) throws Exception { private void fromFODocumentToPDF(Document fo, final String outputFile) throws Exception {
final FopFactory fopFactory = FopFactory.newInstance(); final FopFactory fopFactory = FopFactory.newInstance();
final OutputStream outStream = new BufferedOutputStream(new FileOutputStream(new File(outputFile))); final OutputStream outStream = new BufferedOutputStream(new FileOutputStream(new File(outputFile)));
final Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, outStream); final Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, outStream);
final TransformerFactory factory = TransformerFactory.newInstance(); final TransformerFactory factory = TransformerFactory.newInstance();
final Transformer transformer = factory.newTransformer(); final Transformer transformer = factory.newTransformer();
final StreamSource src = new StreamSource(new File(fo_file)); final DOMSource src = new DOMSource(fo);
final Result res = new SAXResult(fop.getDefaultHandler()); final Result res = new SAXResult(fop.getDefaultHandler());
transformer.transform(src, res); transformer.transform(src, res);