水平方向の改ページでテーブルをレンダリングできる Java 用の (できればオープンソースの) PDF レイアウト エンジンを知っている人はいますか? 「水平改ページ」は、少なくとも BIRT での機能の命名方法ですが、明確にするために、テーブルの列が多すぎて使用可能なページ幅に収まらない場合、テーブルを複数のページに水平に分割する必要があります。 10 列のテーブル。列 1 ~ 4 が最初のページに出力され、列 5 ~ 10 が 2 ページ目に出力されます。表の行数が多すぎて 1 ページに垂直方向に収まらない場合は、もちろん、次のページでもこれを繰り返す必要があります。
これまで、商品を探すのはなかなか大変でした。このような機能は、他の製品では別の名前が付けられている可能性があり、おばさん Google を使用して適切な解決策を見つけるのが難しくなっていると思います。
これまでのところ、私は試しました:
BIRT はこれをサポートしていると主張していますが、実際の実装は非常にバグが多く、使用できません。このような機能については、すべてのページで行の高さが一定に保たれ、ページを隣り合わせに配置するときに行を揃えることができることは自明のことですが。ただし、BIRT は必要な行の高さをページごとに個別に計算します。
ジャスパーにはサポートがありません。
Apache FOP も検討しましたが、XSL-FO 仕様にはこれに適した構文が見つかりません。
いずれにせよ、iText は通常、このタスクには少し「低レベル」すぎます (目的の PDF ドキュメントの他の部分をレイアウトするのが難しくなります) が、サポートを提供していないようです。
他にも数十のレポーティングまたはレイアウト エンジンがあり、適合する場合も適合しない場合もあり、何を探すべきかを正確に推測するのは少し難しいと思うので、おそらく誰かがすでに同様の要件を持っていて、少なくとも正しい方向への提案。製品を Java サーバー アプリケーションに簡単に統合できることが比較的重要です。ネイティブ Java ライブラリが理想的です。
ここで、行をすべてのページで整列させるには、行の高さを次のように計算する必要があります。
Row1.height = max(A1.height, B1.height, C1.height, D1.height)
Row2.height = max(A2.height, B2.height, C2.height, D2.height)
BIRTは現在、次のようなことをしているようです:
Page1.Row1.height = max(A1.height, B1.height)
Page2.Row1.height = max(C1.height, D1.height)
Page1.Row2.height = max(A2.height, B2.height)
Page2.Row2.height = max(C2.height, D2.height)