我下载了iTextSharp dll的最新版本。我生成了一个PdfPTable对象,我必须设置它的高度。尽管设置了PdfPTable的宽度,但我无法设置它的高度。一些作者建议使用' setFixedHeight'方法。但最后一个版本的iTextSharp.dll没有方法作为' setFixedHeight'。它的版本是5.5.2。我该怎么办?
答案 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();
}
}