0

XSL-FO と組み合わせて Apache FOP を使用して、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 オブジェクトの目的であると想定しています)。transform メソッド、Result クラス、SAXResult クラスの javadoc を調べましたが、あまり役に立ちませんでした。誰でもこれについて洞察を提供できますか?

TL;DR; javax.xml.transform.Transformer.transform(StreamSource, Result)でResult を渡す目的は何ですか?また、これを使用して操作が正常に完了したことを確認するにはどうすればよいですか?

4

1 に答える 1

0

変換の結果は、その Result オブジェクトに書き込まれます。オブジェクトの作成に入る一連のオブジェクトを見ると、Result指定した出力ストリームが最終的に結果が書き込まれる場所になります ( に を渡し、ByteArrayOutputStream次にFopFactory.newFop()ハンドラFopを に渡しResultます。出力ストリームが最終的な宛先です)。あなたのxsl変換の。

FileOutputStreamの代わりにディスク上のファイルへのポイントを渡します。ByteArrayOutputStream変換後 (すべてが機能した場合)、ファイルは表示可能な PDF になります。

于 2013-08-15T20:01:19.273 に答える