如何在iTextSharp中设置PdfPTable的高度

时间:2014-08-13 06:43:05

标签: height itextsharp pdfptable

我下载了iTextSharp dll的最新版本。我生成了一个PdfPTable对象,我必须设置它的高度。尽管设置了PdfPTable的宽度,但我无法设置它的高度。一些作者建议使用' setFixedHeight'方法。但最后一个版本的iTextSharp.dll没有方法作为' setFixedHeight'。它的版本是5.5.2。我该怎么办?

3 个答案:

答案 0 :(得分:20)

一旦开始考虑它,设置一个表的高度是没有意义的。或者,它是有道理的,但留下许多问题没有答案或无法回答。例如,如果您将两行表格设置为500的高度,这是否意味着每个单元格的高度为250?如果大图像放在第一行,如果表格通过拆分400/100自动响应怎么办?那么两行中的大量内容呢?它应该压扁那些吗?这些场景中的每一个都会产生不同的结果,这些结果使得知道表格实际上不可靠。如果您查看the HTML spec,您会发现他们甚至不允许为表格设置固定的高度。

然而,有一个简单的解决方案,只是设置单元格本身的固定高度。只要您不使用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。我不推荐这个,但你可能有一个案例。下面的代码只显示六行。

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();

答案 1 :(得分:5)

您可以使用以下任何一种

  

cell.MinimumHeight = 20f;

  

cell.FixedHeight = 30f;

答案 2 :(得分:0)

前提是你已经下载了jar的iText jar,你可以试试这个代码,你可以实现这个功能,在A4纸上输出一排三列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();
    }
}