ItextSharp在pdfptable中水平对齐

时间:2014-04-06 04:05:03

标签: c# pdf itextsharp

我尝试使用ItextSharp在pdf表中对齐单元格内容。不知何故,它根本不起作用,它总是在左边对齐。

     var pageSize = PageSize.A4;

        if (_pdfSettings.LetterPageSizeEnabled)
        {
            pageSize = PageSize.LETTER;
        }


        var doc = new Document(pageSize);
        PdfWriter.GetInstance(doc, stream);
        doc.Open();

        //fonts     

        var normalFont = GetFont();

            normalFont.Color = BaseColor.BLACK;
            normalFont.Size = 14;

       //..titlefont, smallfont,largefont....

         var addressTable = new PdfPTable(1);
         addressTable.WidthPercentage = 100f;

         cell = new PdfPCell();

         cell.AddElement(new Paragraph("Người Gửi", titleFont));
         cell.AddElement(new Paragraph("TAKARA.VN", largeFont));

         cell.HorizontalAlignment = Element.ALIGN_RIGHT;

         addressTable.AddCell(cell);

         doc.Add(addressTable);
         doc.Add(new Paragraph("", normalFont));

更新:我找到了答案

您混淆了文本模式和复合模式。

文字模式:

Phrase p = New Phrase("value");
PdfPCell cell = new PdfPCell(p);
cell.HorizontalAlignment = Element.ALIGN_CENTER;
table.AddCell(cell);

复合模式:

PdfPCell cell = New PdfPCell();
Paragraph p = New Paragraph("value");
p.Alignment = Element.ALIGN_CENTER;
cell.AddElement(p);
table.AddCell(cell);

在文本模式下,使用单元格的对齐方式。在复合模式下(使用AddElement()触发,将忽略单元格的对齐,以支持添加到单元格中的元素的对齐。

3 个答案:

答案 0 :(得分:2)

您可以使用:

cell.HorizontalAlignment = PdfPCell.ALIGN_CENTER; 

或者您可以使用数字对齐:0=Left1=Centre2=Right

答案 1 :(得分:0)

我是这样做的,它对我有用:

cell.HorizontalAlignment = 1;

答案 2 :(得分:0)

我不知道这是否相关,但是请检查rundirection是否为rtl,是否必须删除该参数。否则它将覆盖align组件。

使用itextsharp 5的PS

相关问题