对齐 pdfTable 中的单元格 - ITextSharp

Align Cells inside a pdfTable - ITextSharp

我正在尝试集中 header 列和 "Money values" 右对齐。

这是我的header,目前是左对齐,我需要居中

 PdfPCell cell = new PdfPCell(new iText.Phrase(""));
                cell.HorizontalAlignment = 1;
                cell.Colspan = 7;
                pdfTable.HorizontalAlignment = 1;
                pdfTable.AddCell(new iText.Phrase("NF", font4));
                pdfTable.AddCell(new iText.Phrase("Emissão", font4));
                pdfTable.AddCell(new iText.Phrase("Vencimento", font4));
                pdfTable.AddCell(new iText.Phrase("Dias", font4));
                pdfTable.AddCell(new iText.Phrase("Valor(R$)", font4));
                pdfTable.AddCell(new iText.Phrase("Encargos(R$)", font4));
                pdfTable.AddCell(new iText.Phrase("Vlr. Final(R$)", font4));

这是我填写 table 的地方,列 "Valor(R$)"、"Encargos(R$)"、"Vlr. Final(R$)" 需要对齐,有人知道我在做什么错了?

 foreach (DataRow r in dtNotaAceite.Rows)
                {
                    if (dtNotaAceite.Rows.Count > 0)
                    {
                        DateTime dataEmissao = (DateTime) r["Dtemissao"];
                        DateTime dataVenc = (DateTime)r["Dtvenc"];
                        string emissaoFormatada = dataEmissao.ToString("dd/M/yyyy");
                        string vencFormatada = dataVenc.ToString("dd/M/yyyy");
                        r["VLFINAL"] = Convert.ToDecimal(r["Valor"]) - Convert.ToDecimal(r["VLENCARGOS"]);
                        pdfTable.AddCell(new iText.Phrase(r["Belnr"].ToString(), font3));
                        pdfTable.AddCell(new iText.Phrase(emissaoFormatada, font3));
                        r["Dtvenc"] = String.Format("{0:dd-MM-yyyy}", r["Dtvenc"]);
                        pdfTable.AddCell(new iText.Phrase(vencFormatada, font3));
                        pdfTable.AddCell(new iText.Phrase(r["DIASANTEC"].ToString(), font3));
                        pdfTable.AddCell(new iText.Phrase(r["Valor"].ToString(), font3));
                        r["VLENCARGOS"] = String.Format("{0:0.##}", r["VLENCARGOS"]);
                        pdfTable.AddCell(new iText.Phrase(r["VLENCARGOS"].ToString(), font3));
                        r["VLFINAL"] =  String.Format("{0:0.##}", r["VLFINAL"]);
                        pdfTable.AddCell(new iText.Phrase(r["VLFINAL"].ToString(), font3));
                    }
                }

你做错了什么?

您创建了一个名为 cellPdfPCell 并为其定义了一个对齐方式(以一种丑陋的方式,您应该使用 Element.ALIGN_CENTER 以便我们可以阅读和理解您的代码)并且colspan 为 7。但您不会在任何地方使用该单元格对象...

您创建了一个 PdfPTable 并为其定义了一个对齐方式(以同样丑陋的方式)。 但这定义了 table 整体的对齐方式,而不是单元格的内容。

然后使用 AddCell() 方法向此 table 添加一系列单元格。这意味着您希望 iText 创建 PdfPCell。在这种情况下,您可以在默认单元格中预先定义一些属性 属性:

pdfTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;

您可以在添加一定数量的单元格后更改默认单元格的属性,例如:

 pdfTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
 pdfTable.AddCell(new iText.Phrase("NF", font4));
 pdfTable.AddCell(new iText.Phrase("Emissão", font4));
 pdfTable.AddCell(new iText.Phrase("Vencimento", font4));
 pdfTable.AddCell(new iText.Phrase("Dias", font4));
 pdfTable.AddCell(new iText.Phrase("Valor(R$)", font4));
 pdfTable.AddCell(new iText.Phrase("Encargos(R$)", font4));
 pdfTable.AddCell(new iText.Phrase("Vlr. Final(R$)", font4));
 pdfTable.DefaultCell.HorizontalAlignment = Element.ALIGN_RIGHT;

在最后一行之后添加 AddCell() 的所有单元格都将右对齐。