我下载了iTextSharp dll的最新版本。我生成了一个PdfPTable对象,我必须设置它的高度。尽管设置了PdfPTable的宽度,但无法设置其高度。一些作者建议使用“setFixedHeight”方法。但是,iTextSharp.dll的最新版本没有方法为“setFixedHeight”。它的版本是5.5.2。我该怎么做?
最佳答案
一旦开始考虑 table 高度,就没有意义了。或者,这很有意义,但是却留下了许多无法回答或无法回答的问题。例如,如果将两行表的高度设置为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);
但是,如果您想保持正常的餐 table 状态并且必须设置固定的高度以切碎不适合的东西,则也可以使用
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();
关于height - 如何在iTextSharp中设置PdfPTable的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25279646/