【问题标题】:What information does Result contain when using FOP and XSL-FO, and how can I use it?使用 FOP 和 XSL-FO 时 Result 包含哪些信息,如何使用?
【发布时间】:2013-08-18 01:46:33
【问题描述】:

我将 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;DR; javax.xml.transform.Transformer.transform(StreamSource, Result)中传递Result的目的是什么,如何使用它来检查操作是否成功完成?强>

【问题讨论】:

    标签: java xslt xsl-fo


    【解决方案1】:

    转换的结果被写入该 Result 对象。如果您查看创建Result 对象的对象链,您指定的输出流最终是写入结果的位置(您将ByteArrayOutputStream 传递给FopFactory.newFop(),然后传递@987654324 @handler 到 Result - 输出流是你的 xsl 转换的最终目的地。

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

    【讨论】:

    • 啊,好吧,我明白它现在是如何工作的了。我期待结果类似于“Result.OK”或“Result.SomeErrorOccurredDuringTransform”等。
    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2017-06-02
    • 2010-12-29
    • 1970-01-01
    相关资源
    最近更新 更多