我是iTextSharp的新手。在下面的代码设置中,对于PdfPCell的VerticalAlignment(我认为在文本模式下)没有做任何事情,文本仍然对齐到单元格的底部。 根据多个在线示例,它应该工作,但不是。设置HorizontalAlignment有效。 请帮忙。谢谢
table = new PdfPTable(5);
Document document = new Document(PageSize.A4);
document.Open();
PdfPTable headerTable = new PdfPTable(3);
float[] headerWidths = { 2f, 5f, 2f };
headerTable.SetWidths(headerWidths);
myFont = FontFactory.GetFont("Arial", 8, Font.NORMAL);
PdfPCell myCell = setupHeaderCell("My Text", myFont);
// ADD headerTable to MainTable
// Creates a PdfPCell that accepts the headerTable as a parameter and then adds that cell to the main PdfPTable.
PdfPCell cellHeader = new PdfPCell(headerTable);
cellHeader.Border = PdfPCell.NO_BORDER;
// Sets the column span of the header cell to dataColumNb.
cellHeader.Colspan = 5;
// Adds the above header cell to the table.
table.AddCell(cellHeader);
................
}
private PdfPCell setupHeaderCell(string lineText, Font myFont)
{
var cl = new PdfPCell(new Phrase(lineText, myFont);
cl.VerticalAlignment = Element.ALIGN_MIDDLE; // does Not change vertical alignment
return cl;
}
答案 0 :(得分:2)
你有嵌套表,所以我不确定你要做什么。 VerticalAlignment
是相对于单元格的内容,而不是单元格本身,但我不确定这是不是你的问题。在对此进行故障排除时,我们需要通过消除复杂性并找到仍然产生问题的最不复杂的版本来简单地解决问题。我已经针对iTextSharp 5.4.4测试了下面的代码,它正确地垂直对齐最左边的列。从这开始,慢慢添加你的逻辑,并可能包括你期望和获得的一些图纸和/或截图。
var t2 = new PdfPTable(3);
float[] headerWidths = { 2f, 5f, 2f };
t2.SetWidths(headerWidths);
var cl = new PdfPCell(new Phrase("Test"));
cl.VerticalAlignment = Element.ALIGN_MIDDLE;
t2.AddCell(cl);
t2.AddCell("This\nIs\nMore\nText");
t2.AddCell("This\nIs\nMore\nText");