3

ユーザーの選択に応じて、PDF ドキュメントと RTF ドキュメントの両方を生成するコードを書いています。両方のドキュメントの情報は同じです。

これまで、Table、Cell、HeaderFooter などのクラスを使用していましたが、これらはドキュメント ライター (PdfWriter または RtfWriter2) によって正しい形式にレンダリングされます。

ただし、変更を加えようとすればするほど (ほとんどの場合、iText 2.1 へのアップグレードでスペースが少し風変わりなままになったため)、「PdfpTable を使用する」または「pageEvents を使用してヘッダーを設定する」ように言われます。多くのジェネリック クラスが廃止されているようです。

PDF と RTF のテーブル作成を分離するためにコードを改良することを考えています。ただし、すべての iText チュートリアルでは、PDF ドキュメントと RTF ドキュメントの両方が必要な場合に Table を使用 することを実際に推奨しているようです。

さらに、PdfpTable クラスはありますが、RTF に類似したものはないようです。そのため、いずれにせよ Table を使用することになり、現在サポートされていない Table クラスに伴うすべての癖に対して脆弱なままになります。

基本的に、コードを 2 つのセクションに分割することの利点/欠点は何ですか? では、SimpleTable はこれらすべてのどこに関係しているのでしょうか? 必要な柔軟性が得られますか?

ありがとう!

4

1 に答える 1

7

iText In Actionという本から、第6章の終わり:

iText API を見ると、他のテーブル クラスもいくつか見つかります。com.lowagie.text.Tableは元のテーブル クラスです。それは初期の iText 時代からのものです。クラスcom.lowagie.text.pdf.PdfTableを内部的に使用して、テーブルを PDF にレンダリングします (このクラスをPdfPTableと混同しないでください)。PdfPTableTable
の間のリンクを形成しようとする 新しいSimpleTableクラス もあります。PDF を書き込むドキュメントに追加する場合はPdfPTableに、 HTML または RTF を生成する場合はTableに変換することができます。[...]テーブル の主な欠点
クラスは、サポートされなくなったことです。さまざまな人が既知の問題のほとんどを修正しましたが、今日では、すべてのテーブル メソッドが機能するかどうか、およびどのように機能するかを理解している人は 1 人もいません。このクラスを使用することにした場合、多かれ少なかれ独力で行うことになり、歴史的な設計上の決定に基づいて多くの風変わりなレイアウトの問題に遭遇することになります。ただし、これはTableクラスを十分に活用できないという意味ではありません。

Table クラスの利点

Table クラスを使用すると、PDF、RTF、および HTML でレンダリングできるテーブル構造を生成できます。結果を比較すると、表の表示方法にわずかな違いがあることがわかります。これは正常です; すべてのテーブル機能がすべてのドキュメント形式でサポートされているわけではありません。

  1. 同じコードを使用して、PDF、HTML、または RTF でテーブルを生成できます。
  2. HTML と同じようにパディングとスペーシングを設定できます。
  3. ネストした表に頼らなくても、行スパンを使用できます。
  4. セルを追加した後でも、列の数を変更できます。
  5. 特定の位置にセルを追加できます (行数は動的に増加します)。
  6. テーブルをドキュメントに追加する前に、列を削除できます。
  7. PdfPTableであるかのように iText にテーブルを追加させることができます。
  8. Tableオブジェクトに基づいてPdfPTableオブジェクトを取得します。

PdfPTable とは対照的に、テーブルにセルをランダムな順序で追加し、必要に応じて列を追加または削除できます。setRowspan() を使用しなかった場合は、Table を PdfPTable に変換することもできます。

( PdfP )- Tableの簡易版であるSimpleTableクラスもあります。SimpleTableを PDF ドキュメントに追加する場合、iText は最初にテーブルをPdfPTableとして追加しようとします。これが失敗した場合は、Tableとして追加されます。SimpleTableを RTF または HTML ドキュメントに追加すると、 Table として追加さますSimpleTableTableおよびPdfPTableとは異なります行の概念を再導入するという意味で。これは、table-row-cell 構造を持つ XML ファイルを解析する場合に便利です。行に対応するタグに属性がある場合、行のセルごとにこのプロパティを個別に定義する必要はありません。行全体のプロパティを一度に設定できます。

概要

PdfPTableを最初に選択する必要があります。ただし、プロジェクトに定義された要件によっては、TableまたはSimpleTableを選択する正当な理由がある場合があります。

于 2013-06-13T14:11:20.697 に答える