PdfPCell中的水平文本对齐

yog*_*420 9 .net c# vb.net asp.net itextsharp

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

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);
Run Code Online (Sandbox Code Playgroud)

它不起作用.

我正在创建一个包含5列的表,并在运行时使用上面的代码在for循环中动态添加单元格.我希望所有单元格内容都居中.

Pat*_*ick 7

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

PdfPCell c2 = new PdfPCell(new iTextSharp.text.Phrase("Text")) { HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER };
table.AddCell(c2);
Run Code Online (Sandbox Code Playgroud)

我知道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);
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述

希望能帮助到你


Man*_*rma 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);
Run Code Online (Sandbox Code Playgroud)

  • 它工作正常...查看评论...我累了...现在我通过将单元格短语属性分配给新创建的短语来解决我的问题。 (2认同)

小智 6

尝试这个,

cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
Run Code Online (Sandbox Code Playgroud)


Ale*_*x C 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 ***************************/
        }
Run Code Online (Sandbox Code Playgroud)

这应该归功于用户 Bruno Lowagie,但似乎有一些奇怪的戏剧发生,对正确答案的不满和随后的删除投诉。

如果在正确的时间在正确的地方得到明确的答案,我会吃掉反对票。

有些东西比网点更重要。<3