4

Java オブジェクトからその場で PDF レポートを生成しようとしています。これの例をあまり見つけることができなかったので、次の例に従っています。

http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/examples/embedding/java/embedding/ExampleObj2PDF.java?view=markup

このコードと私のコードの唯一の実際の違いは、JSON 変換と XMLSerializer を使用して src (例の 81 行目) を生成することです。

私が遭遇した問題は、Transformer の使用です。変換を実行すると (例の 87 行目)、次のエラー メッセージが表示されます。

(Location of error unknown)org.apache.fop.fo.ValidationException: First element must be the fo:root formatting object. Found (Namespace URI: "", Local Name: "html") instead. Please make sure you're producing a valid XSL-FO document.

私は Transformer を可視化できず、どのように機能するかを説明するドキュメントを見つけることができなかったので、変換がどこで壊れているのかよくわかりません。

この種の変換の経験、または私が見逃しているものを理解していただければ幸いです。

4

2 に答える 2

6

Apache FOP の入力は XSL:FO です。エラー メッセージは、入力が有効な XSL:FO ドキュメントではないことを示しています。最初の (ルート) 要素は "fo:root" であると予想されますが、"html" が見つかったためです。FOP は HTML 入力を読み取りません。コードを小さなステップに分解し、中間ドキュメントを保存して問題を特定することをお勧めします。手順は次のとおりです。

  1. JSON オブジェクトは XML にシリアル化されます
  2. XML は XSLT を使用して XSL:FO に変換されます
  3. XSL:FO は、FOP を使用して PDF に変換されます。
于 2012-06-15T09:04:54.267 に答える
2

XML を XSL:FO に変換するには、このチュートリアルに従う必要があります。そこから、すでに述べた例を使用できるようになります。

http://svn.apache.org/viewvc/xmlgraphics/fop/trunk/examples/embedding/java/embedding/ExampleXML2FO.java?view=markup

于 2012-06-15T20:35:32.733 に答える