web-dev-qa-db-ja.com

iTextSharpでPdfPTableの高さを設定する方法

iTextSharp dllの最新バージョンをダウンロードしました。 PdfPTableオブジェクトを生成し、その高さを設定する必要があります。 PdfPTableの幅を設定しても、高さを設定できません。一部の作成者は、「setFixedHeight」メソッドの使用を提案しています。しかし、iTextSharp.dllの最後のバージョンには、「setFixedHeight」としてのメソッドがありません。バージョンは5.5.2です。どうすればできますか?

8
mustafaalkan64

テーブルの高さを設定しても、考え始めたら意味がありません。または、それは理にかなっていますが、多くの質問が未回答または回答不可能のままになります。たとえば、2行のテーブルを高さ500に設定した場合、それは各セルの高さが250になることを意味しますか?大きな画像が最初の行に配置された場合、テーブルは400/100を分割して自動的に応答する必要がありますか?次に、両方の行の大きなコンテンツについてはどうでしょうか。これらのシナリオはそれぞれ異なる結果を生み、テーブルが実際に何を実行するかを信頼できなくなります。 HTML仕様 を見ると、テーブルの固定の高さを設定することさえできないことがわかります。

ただし、簡単な解決策があり、それはセル自体の固定高さを設定するだけです。 new PdfPCell()を使用していない限り、DefaultCell.FixedHeight好きなように。

var t = new PdfPTable(2);
t.DefaultCell.FixedHeight = 100f;

t.AddCell("Hello");
t.AddCell("World");
t.AddCell("Hello");
t.AddCell("World");

doc.Add(t);

手動でセルを作成する場合は、それぞれにFixedHeightを設定する必要があります。

var t = new PdfPTable(2);

for(var i=0;i<4;i++){
    var c = new PdfPCell(new Phrase("Hello"));
    c.FixedHeight = 75f;
    t.AddCell(c);
}

doc.Add(t);

ただし、通常のテーブルサイズが必要で、収まらないものを切り落とす固定高さを設定する必要がある場合は、ColumnTextを使用することもできます。私はこれをお勧めしませんが、あなたはそれについてケースがあるかもしれません。以下のコードは6行のみを表示します。

var ct = new ColumnText(writer.DirectContent);
ct.SetSimpleColumn(100, 100, 200, 200);

var t = new PdfPTable(2);
for(var i=0;i<100;i++){
    t.AddCell(i.ToString());
}
ct.AddElement(t);
ct.Go();
20
Chris Haas

次のいずれかを使用できます

cell.MinimumHeight = 20f;

または

cell.FixedHeight = 30f;

5
malik saifullah

Jar iText jarをダウンロードしていることが前提です。このコードを試すことができ、この機能を実現できます。A4の用紙で、3列のdataegの行を出力します。

import Java.io.File;
import Java.io.FileOutputStream;
import Java.io.IOException;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter;

public class ceshi {

    public static final String DEST = "D:\\fixed_height_cell.pdf";

    public static void main(String[] args) throws IOException,
            DocumentException {
        File file = new File(DEST);
        file.getParentFile().mkdirs();
        new ceshi().createPdf(DEST);
    }

    public void createPdf(String dest) throws IOException, DocumentException {
        Document document = new Document();
        PdfWriter.getInstance(document, new FileOutputStream(dest));
        document.open();
        PdfPTable table = new PdfPTable(3);// Set a row and the three column of
                                            // A4 paper
        table.setWidthPercentage(100);
        PdfPCell cell;
        for (int r = 1; r <= 2; r++) {// Set display two lines
            for (int c = 1; c <= 3; c++) {// Set to display a row of three  columns
                cell = new PdfPCell();
                cell.addElement(new Paragraph("test"));
                cell.setFixedHeight(285);// Control the fixed height of each cell
                table.addCell(cell);
            }
        }
        document.add(table);
        document.close();
    }
}
0
nihaoqiulinhe