gpt4 book ai didi

c# - 在 PdfPCell 中右对齐文本

转载 作者:太空宇宙 更新时间:2023-11-04 10:59:30 28 4
gpt4 key购买 nike

我有一个可以生成 PDF 发票的 C# 应用程序。此发票中有一个项目和价格表。这是使用 PdfPTablePdfPCell 生成的。

我希望能够右对齐价格列,但我似乎无法做到 - 文本在单元格中总是左对齐。

这是我创建表的代码:

PdfPTable table = new PdfPTable(2);
table.TotalWidth = invoice.PageSize.Width;
float[] widths = { invoice.PageSize.Width - 70f, 70f };
table.SetWidths(widths);
table.AddCell(new Phrase("Item Name", tableHeadFont));
table.AddCell(new Phrase("Price", tableHeadFont));

SqlCommand cmdItems = new SqlCommand("SELECT...", con);

using (SqlDataReader rdrItems = cmdItems.ExecuteReader())
{
while (rdrItems.Read())
{
table.AddCell(new Phrase(rdrItems["itemName"].ToString(), tableFont));
double price = Convert.ToDouble(rdrItems["price"]);
PdfPCell pcell = new PdfPCell();
pcell.HorizontalAlignment = PdfPCell.ALIGN_RIGHT;
pcell.AddElement(new Phrase(price.ToString("0.00"), tableFont));
table.AddCell(pcell);
}
}

有人可以帮忙吗?

最佳答案

我是 iText 的原始开发者,您遇到的问题在我的 book 中有解释。 .

您正在混合使用文本模式复合模式

文本模式中,您可以使用Phrase作为构造函数的参数来创建PdfPCell,并在单元格级别定义对齐方式。但是,您正在复合模式下工作。一旦您使用 addElement() 方法,就会触发此模式。在复合模式中,在单元格级别定义的对齐方式将被忽略(这解释了您的问题)。相反,使用单独元素的对齐方式。

如何解决您的问题?

通过以不同方式将短语添加到单元格,可以在文本模式下工作。或者在复合模式下工作并使用您定义对齐方式的段落

文本模式相比,复合模式的优势在于同一单元格中的不同段落可以有不同的对齐方式,而在文本模式中只能有一种对齐方式。另一个优点是您不仅可以添加文本:您还可以添加图像、列表、表格……文本模式的优点是速度:处理单元格内容所需的处理时间更少。

关于c# - 在 PdfPCell 中右对齐文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47054038/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com