- rowStart - 書き始める0から始まる行目
- rowEnd - 最後の行目+1。-1のときは、最後の行までかかれます
- xPos - 書かれるテーブルの左上の x 座標
- yPos - 書かれるテーブルの左上の y 座標 (注意: 0がページの最下部であることはFAQで説明した)
- canvas - 行が書かれる PdfContentByte (チュートリアルのPart IVで説明)
Demonstrates the writeSelectedRows method: see WriteSelectedRows.pdf
Adds a table to an absolute position: see tables.pdf
例を見てわかるように、writeSelectedRows
を使う時にはいくつかの注意事項がある。 PdfPTable を document.add()
によって加える時には、テーブルの幅は、常に現在のポインタの利用可能なページ幅のパーセンテージから計算されていた(例の、2ページ目を参照)。しかし、PdfPTable
を絶対位置へ追加するときには、iText
は、ページの残りについて何も知ることはできない。利用可能な幅とは何をさす?
これが、iTextがなにもできない理由のひとつです。そのため、setTotalWidth(float totalWidth)
や
setTotalWidth(float[] columnWidth)
メソッドによってテーブルの全幅を設定しなければなりません。
また、PdfPTableがページに収まっているかもチェックする責任はあなたにあります。5ページ目の100-150行目は、y
= 820 の代わりに y = 200 で始まっているため、ページに収まっていません。112-149
は書かれてはいるのですが、ページの可視領域の外側なので見ることはできません。
例を見ると、非常に多くの行をページに収めなければならないようなときに、writeSelectedRows(int rowStart, int rowEnd, float xPos,
float yPos, PdfContentByte canvas)
をテーブルを複数ページに渡って水平に分割するために使うことができることがわかります。テーブルの幅が広い場合も、同じように垂直に分割できます。writeSelectedRows(int colStart, int colEnd, int rowStart,
int rowEnd, float xPos, float yPos, PdfContentByte canvas)
というメソッドがこれをします。
Demonstrates how to split a Table in two sections of columns: see SplitTable.pdf
次の例は、テーブルを分割する方法を示しています。テーブルは、生成されるテーブルはお互いに引っ付いているので(ここでは、setSpacingBefore と setSpacingAfter は使わないように)、ひとつの大きなテーブルなのか、小さくわけられた複数のテーブルなのかは、見た目ではわかりません。
Break one large Table up into different smaller tables with the same header: see FragmentTable.pdf
- PdfPtable.BASECANVAS - オリジナルの PdfContentByte。ここにおかれたものは、テーブルの下になる。
- PdfPtable.BACKGROUNDCANVAS - 背景がおかれるレイヤー。
- PdfPtable.LINECANVAS - 線がおかれるレイヤー。
- PdfPtable.TEXTCANVAS - テキストがおかれるレイヤー。ここにおかれたものは、テーブルの上に来る。
Demonstrates what one can do with cell events: see CellEvents.pdf
External resources for this example: otsoe.jpg
Demonstrates what one can do with table events: see TableEvents1.pdf
Demonstrates what one can do with table events (cells with colspan > 1): see TableEvents2.pdf
Demonstrates how to simulate cellspacing as in HTML: see FloatingBoxes.pdf
Demonstrates how to add vertical text in a cell: see VerticalText.pdf