用点填充PDFP表格单元格
本文关键字:表格 单元格 PDFP 填充 | 更新日期: 2023-09-27 18:25:35
我有一个PDFP表,我想把它这样布局:
Item1 ............ $10.00
Item1123123 ...... $50.00
Item3 ............ $75.00
这就是我目前所拥有的:
var tableFont = FontFactory.GetFont(FontFactory.HELVETICA, 7);
var items = from p in ctx.quote_server_totals
where p.item_id == id
&& p.name != "total"
&& p.type != "totals"
select p;
foreach (var innerItem in items)
{
detailsTable.AddCell(new Phrase(innerItem.type == "discount" ? "ADJUSTMENT -" + innerItem.name : innerItem.name, tableFont));
detailsTable.AddCell(new Phrase(".......................................................", tableFont));
detailsTable.AddCell(new Phrase(Convert.ToDecimal(innerItem.value).ToString("c"), tableFont));
}
document.Add(detailsTable);
正如你所看到的,我能够让这些点扩展的唯一方法是手动输入它们;然而,这显然不起作用,因为每次运行此代码时,第一列的宽度都会不同。我有办法做到这一点吗?谢谢
请下载我的书的第2章并搜索DottedLineSeparator
。这个分隔符类将在Paragraph
的两个部分之间绘制一条虚线(如本书中的图所示)。您可以在这里找到Java书籍的C#版本示例。
如果你能使用固定宽度的字体,比如FontFactory.COURIER
,你的任务会容易得多。
//Our main font
var tableFont = FontFactory.GetFont(FontFactory.COURIER, 20);
//Will hold the shortname from the database
string itemShortName;
//Will hold the long name which includes the periods
string itemNameFull;
//Maximum number of characters that will fit into the cell
int maxLineLength = 23;
//Our table
var t = new PdfPTable(new float[] { 75, 25 });
for (var i = 1; i < 10000; i+=100) {
//Get our item name from "the database"
itemShortName = "Item " + i.ToString();
//Add dots based on the length
itemNameFull = itemShortName + ' ' + new String('.', maxLineLength - itemShortName.Length + 1);
//Add the two cells
t.AddCell(new PdfPCell(new Phrase(itemNameFull, tableFont)) { Border = PdfPCell.NO_BORDER });
t.AddCell(new PdfPCell(new Phrase(25.ToString("c"), tableFont)) { Border = PdfPCell.NO_BORDER });
}