FOPとJavaを使用してPDF文書を生成しようとしています。文字列をJavaの入力ストリームに変換します
XMLをファイルとしてではなく文字列として受け取ります。
このXML文字列をXML入力ストリームに変換して、xslfoTransformer.transform(source、res)を呼び出す方法を教えてください。 sourceは入力ストリームとしてのXML文字列です。
ご意見をお寄せください。
FOPとJavaを使用してPDF文書を生成しようとしています。文字列をJavaの入力ストリームに変換します
XMLをファイルとしてではなく文字列として受け取ります。
このXML文字列をXML入力ストリームに変換して、xslfoTransformer.transform(source、res)を呼び出す方法を教えてください。 sourceは入力ストリームとしてのXML文字列です。
ご意見をお寄せください。
あなたはおそらくReader
、ないInputStream
に変換します。これを行うにはStringReaderを使用してください。 StreamSourceには、Readerを受け取るコンストラクタがあり、StreamSource
をTransformer.transform()に渡すことができます。 Reader
は、文字のストリームである一方で、私は文字列は文字ではなく、バイトを保持し、InputStream
ので、あなたはおそらくReader
ではなくInputStream
をしたいと言う
はバイトストリームです。
String S = ...;
InputStream source = new ByteArrayInputStream(S.getBytes(encoding))
XMLのエンコーディングを知っていることを暗示します。これは通常は真実ではない。 –
new StreamSource(new StringReader(str))
このメソッドを試しましたが、例外が発生しています。 org.apache.fop.fo.FOTreeBuilder.endDocumentでorg.apache.fop.area.AreaTreeHandler.endDocumentでjava.lang.NullPointerExceptionが \t(AreaTreeHandler.java:264) \t(FOTreeBuilder.java:171) \t net.sf.saxon.event.ContentHandlerProxy.close(ContentHandlerProxy.java:255) \t net.sf.saxon.event.ImplicitResultChecker.close(ImplicitResultChecker.java:69) \t at net.sf.saxon.event .ProxyReceiver.close(ProxyReceiver.java:87) でnet.sf.saxon.event.ComplexContentOutputter.closeで\t(ComplexContentOutputter.java:468) 手がかりはありますか? – jobinbasani
Ok ..私はそれを理解しました... xmlのルート要素の名前を「root」に変更すると機能しました。 助けてくれてありがとう! – jobinbasani