gpt4 book ai didi

c# - PdfPCell 中的右对齐文本

转载 作者:IT王子 更新时间:2023-10-29 04:47:36 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 中有解释。 .

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

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

如何解决你的问题?

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

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

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

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