PdfPCell中的水平文本对齐

我正在使用此代码水平对齐。

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循环中动态添加单元格。 我希望所有单元格内容都居中。

试试这个,

 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); 

试试这个,

 cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right 

根据评论,正确答案(我刚刚在本地测试)是创建一个段落元素并将对齐指令添加到段落中。

一个代码的工作块表明了这一点:

  Font qFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLDOBLIQUE, 10); List widths = new List(); 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,但似乎有一些奇怪的戏剧正在发生,对正确答案的暗示投票和随后删除相同的投诉。

如果在正确的时间在正确的地方找到明确的答案,我会吃掉它们。

有些事情比互联网点更重要。 <3

我尝试了所有上述解决方案,但都没有。 然后我尝试了这个,这使我找到了正确的解决方案

 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); 

结果:

在此处输入图像描述

希望能帮助到你

我知道这是一个老问题,但适当的解决方法是使用cell.HorizontalAlignment = 1;

这是一个很好的例子

例如,可以为所有表格单元格设置对齐:

 table.DefaultCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED; 

如果您需要某些表格单元格的其他对齐方式,则可以单独指定 –

 Phrase phraseConstant = new Phrase("Name :", font); PdfPCell cell = new PdfPCell(phraseConstant); cell.HorizontalAlignment = 0; table.AddCell(phraseConstant); 

最后

改变这个:

  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; 

看起来相似但结果不同我不知道为什么