9

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

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

4

7 回答 7

13

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

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

结果:

在此处输入图像描述

希望能帮助到你

于 2017-10-26T09:23:58.327 回答
8

尝试这个,

cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
于 2016-08-03T06:33:20.293 回答
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);
于 2013-08-13T04:30:30.930 回答
5

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

演示这一点的工作代码块是:

        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,但似乎有一些奇怪的戏剧正在上演,对正确答案的投反对票以及随后删除相同答案的投诉。

如果它在正确的时间在正确的地方发布了明确的答案,我会吃掉反对票。

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

于 2016-09-29T14:31:56.277 回答
2

我知道这是老问题,但正确的解决方案是使用cell.HorizontalAlignment = 1;

这是一个很好的例子

于 2014-10-25T09:23:28.220 回答
2

最后

改变这个:

 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;

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

于 2018-09-05T08:11:33.300 回答
0

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

table.DefaultCell.HorizontalAlignment = Element.ALIGN_JUSTIFIED;

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

Phrase phraseConstant = new Phrase("Name :", font);
PdfPCell cell = new PdfPCell(phraseConstant);
cell.HorizontalAlignment = 0;
table.AddCell(phraseConstant);
于 2018-04-10T11:07:35.610 回答