结果在使用FOP和XSL-FO时包含哪些信息,以及如何使用它?

时间:2013-08-15 19:15:06

标签: java xslt xsl-fo

我正在将Apache FOP与XSL-FO结合使用,将XML转换为格式化的PDF。现在我在Java中有以下方法(忽略该方法现在不返回布尔值的事实):

public boolean Transform() throws TransformerException, FOPException
{
  Transformer lTransformer;
  java.io.ByteArrayOutputStream lOutStream = new java.io.ByteArrayOutputStream();

  FopFactory lFopFactory = FopFactory.newInstance();
  FOUserAgent lFOAgent = lFopFactory.newFOUserAgent();

  lTransformer = getTransformer(mXsltSource); // returns a new Transformer
  Fop fop = lFopFactory.newFop(mMimeOut, lFOAgent, lOutStream);
  Result res = new SAXResult(fop.getDefaultHandler());

  lTransformer.transform(mSource, res); // transforms xml source to formatted XSL-FO transform
}

但是,我不确定如何使用“res”来确保“lTransformer.transform(StreamSource,Result)”方法正确执行(我假设这是Result对象的目的)。我已经查看了转换方法,Result类和SAXResult类的javadoc,但这些并没有提供太多帮助。任何人都能对此有所了解吗?

TL; DR; javax.xml.transform.Transformer.transform(StreamSource,Result)中传递结果的目的是什么,以及如何使用它来检查操作是否成功完成?

1 个答案:

答案 0 :(得分:0)

转换的结果将写入该Result对象。如果查看创建Result对象的对象链,您指定的输出流最终会写入结果的位置(您将ByteArrayOutputStream传递给FopFactory.newFop(),然后将Fop处理程序传递给Result - 输出流是xsl转换的最终目的地。

FileOutputStream指向磁盘上的某个文件而不是ByteArrayOutputStream,并在转换后(如果一切正常),该文件应该是您可以查看的PDF文件。