0

我将 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 类的 javadocs,但这些并没有产生太大的帮助。有人可以对此提供一些见解吗?

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

4

1 回答 1

0

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

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

于 2013-08-15T20:01:19.273 回答