从 Win Form 将 iTextSharp 中的列对齐方式更改为 "RIGHT"

Changing Column Alignment to "RIGHT" in iTextSharp from Win Form

我试图将 "Amount" 的数据网格列之一对齐到右侧,但在尝试使用 itextsharp 创建 PDF 时无法这样做。所有列都左对齐,一些列应该左对齐,最后一列应该右对齐。请帮助

下面列出了代码。

PdfPTable pdfTable = new PdfPTable(dataGridView1.ColumnCount);
            pdfTable.SetWidths(new float[] { 5f, 10f, 10f, 7f, 9f });
            pdfTable.DefaultCell.Padding = 3;
            pdfTable.WidthPercentage = 90;
            pdfTable.HorizontalAlignment = Element.ALIGN_LEFT;
            pdfTable.DefaultCell.BorderWidth = 1;

foreach (DataGridViewColumn column in dataGridView1.Columns)
            {

                PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText,     fontTitle2));
                cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
                cell.HorizontalAlignment = Element.ALIGN_CENTER;
                pdfTable.AddCell(cell);
            }

 foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                foreach (DataGridViewCell cell in row.Cells)
                {

                    pdfTable.AddCell(new Phrase(cell.Value.ToString(),   fontTitle));

                }
            }

您的问题很奇怪,因为您创建第一行的方式会导致假设您已经知道问题的答案。

创建第一行时,您需要:

PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText, fontTitle2));
cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
cell.HorizontalAlignment = Element.ALIGN_CENTER;
pdfTable.AddCell(cell);

您在 文本模式 中创建了一个 PdfPCell,并在单元格级别将对齐设置为 ALIGN_CENTER。这是正确的。

当您创建后续行时,您需要:

pdfTable.AddCell(new Phrase(cell.Value.ToString(), fontTitle));

这还会在文本模式(内部)中创建一个PdfPCell,并使用默认单元格的对齐方式。如果您没有更改此对齐方式,则对齐方式为 ALIGN_LEFT.

而不是使用:

pdfTable.AddCell(new Phrase(cell.Value.ToString(), fontTitle));

为什么不使用在为第一行创建代码时已经掌握的知识?

PdfPCell cell = new PdfPCell(new Phrase(cell.Value.ToString(), fontTitle));
cell.HorizontalAlignment = Element.ALIGN_RIGHT;
pdfTable.AddCell(cell);

当然:如果某些单元格需要 Element.ALIGN_LEFT 而其他单元格需要 Element.ALIGN_RIGHT,则必须在循环中添加一个 if。如果应该检查 cell 是否是 row 中的最后一个单元格。