我正在使用此代码水平对齐。
cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also.
table.AddCell(cell);
它不起作用。
我正在创建一个包含5列的表,并在运行时使用上面的代码在for循环中动态添加单元格。我希望所有单元格内容都居中。
答案 0 :(得分:6)
试试这个,
cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = Element.ALIGN_CENTER; //Tried with Element.Align_Center Also. Tried Adding this line before adding element also.
table.AddCell(cell);
答案 1 :(得分:6)
我尝试了以上所有解决方案但都没有效果。 然后我尝试了这个,这使我找到了正确的解决方案
PdfPCell c2 = new PdfPCell(new iTextSharp.text.Phrase("Text")) { HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER };
table.AddCell(c2);
我知道OP不需要它,但如果用\ n分隔,你也可以将几个单词居中。此外,您还可以使用Element.ALIGN_MIDDLE
垂直居中所有代码都是:
PdfPCell c2 = new PdfPCell(new iTextSharp.text.Phrase("AAAAAAAAA\nBBBBBB")) { HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER, VerticalAlignment = iTextSharp.text.Element.ALIGN_MIDDLE };
table.AddCell(c2);
结果:
希望有所帮助
答案 2 :(得分:5)
试试这个,
cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
答案 3 :(得分:4)
根据评论,正确答案(我刚刚在本地测试)是创建一个段落元素并将对齐指令添加到段落中。
演示此代码的工作代码块是:
Font qFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLDOBLIQUE, 10);
List<float> widths = new List<float>();
for(int i = 0; i < qs.Selected.Items.Count; i++) {
widths.Add((pageRectangle.Width - 250)/ qs.Selected.Items.Count);
}
PdfPTable table = new PdfPTable(qs.Selected.Items.Count);
table.HorizontalAlignment = Element.ALIGN_CENTER;
table.SetTotalWidth(widths.ToArray());
foreach(System.Web.UI.WebControls.ListItem answer in qs.Selected.Items) {
cell = new PdfPCell();
cell.Border = Rectangle.NO_BORDER;
/******************** RELEVANT CODE STARTS HERE ***************************/
Paragraph p = new Paragraph(answer.Text, aFont);
p.Alignment = Element.ALIGN_CENTER;
cell.AddElement(p);
table.AddCell(cell);
/******************** RELEVANT CODE ENDS HERE ***************************/
}
对此应该归功于用户Bruno Lowagie,但似乎有一些奇怪的戏剧正在发生,对正确答案的暗示投票及随后删除的投诉。
如果在适当的时间在正确的地方找到明确的答案,我会吃掉它们。
有些事情比互联网点更重要。 &lt; 3
答案 4 :(得分:2)
我知道这是一个老问题,但正确的解决方案是使用cell.HorizontalAlignment = 1;
这是一个不错的example
答案 5 :(得分:0)
可以为所有表格单元设置对齐,例如:
table.DefaultCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED;
如果您需要对某些表格单元格进行其他对齐,则可以单独指定 -
Phrase phraseConstant = new Phrase("Name :", font);
PdfPCell cell = new PdfPCell(phraseConstant);
cell.HorizontalAlignment = 0;
table.AddCell(phraseConstant);
答案 6 :(得分:0)
最后
更改此内容:
cell = New PdfPCell();
p = New Phrase("value");
cell.AddElement(p);
cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER;
table.AddCell(cell);
与此:
PdfPCell cell = new PdfPCell(new Phrase("value"));
cell.HorizontalAlignment = Element.ALIGN_CENTER;
看起来很相似,但结果却不一样