如何在iTextSharp中设置PdfPTable的高度

mus*_*n64 8 height itextsharp pdfptable

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

Chr*_*aas 20

一旦你开始考虑它,设置一个表的高度是没有意义的.或者,它是有道理的,但留下许多问题没有答案或无法回答.例如,如果您将两行表格设置为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);
Run Code Online (Sandbox Code Playgroud)

如果您手动创建单元格,则需要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);
Run Code Online (Sandbox Code Playgroud)

但是,如果你想要正常的表格,并且必须设置一个固定的高度来切除不合适的东西,你也可以使用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();
Run Code Online (Sandbox Code Playgroud)


mal*_*lah 5

你可以使用以下任何一种

cell.MinimumHeight = 20f;

要么

cell.FixedHeight = 30f;