C# PDF table 在错误的位置添加行
C# PDF table add row in wrong position
[由于对答案的误解而编辑]
我正在用 C# 编写一个简单的程序,使用 iText7 创建 PDF 文件。
在此 PDF 中,我添加了一个 table,其第一个单元格从文件中的某个位置开始。
我不知道我是否设置了正确的位置,但每次我添加另一个带有 tab.StartNewRow()
的单元格时,生成的新 table 都会重新定位,将最后一个单元格作为位置参考,将之前的从那个点向上 添加单元格 ,而我想从那个点向下添加单元格 。
我应该使用哪种方法?那是我的代码:
以前我使用 tab1.SetFixedPosition(20, heigh, width);
设置第一个 table 单元格的位置
然后,为了添加其他单元格:
if (mylistbox.Items.Count > 0)
{
tab1.AddCell("FIRST CELL");
tab1.StartNewRow();
for (int i = 0; i < mylistbox.Items.Count; i++)
{
tab1.AddCell(mylistbox.Items[i].ToString());
tab1.StartNewRow();
}
doc.Add(tab1);
}
[编辑 #2] 为了更好地解释我的问题
我必须放置 5 个 tables,它们必须从某个点向下增长,在文档中以相等的距离、相同的高度和宽度放置。这张图片解释了结果应该如何:
在 WPF 应用程序中,我有一个包含 5 个项目的 ListBox
,编号为 1 到 5。这应该与 WinForms 非常相似。
CreatePercentArray
的大小等于一行中的列数。
一篇关于表格的有趣文章:link
private void CreateListBoxTable(Document pdfDoc)
{
// Create an array where each item has an equal width, and use the entire pdf width
// The CreatePercentArray takes a size which is equal to the amount of columns in a row
// By using percentages, they will automatically adapt
// Use CreatePointArray for exacter measurements
var table = new Table(UnitValue.CreatePercentArray(2)).UseAllAvailableWidth();
if (!MyListBox.Items.IsEmpty)
{
foreach (var listBoxItem in MyListBox.Items)
{
table.AddCell(((ListBoxItem) listBoxItem).Content.ToString());
}
}
// Adds table to document
pdfDoc.Add(table);
// Closes document
pdfDoc.Close();
}
[由于对答案的误解而编辑]
我正在用 C# 编写一个简单的程序,使用 iText7 创建 PDF 文件。 在此 PDF 中,我添加了一个 table,其第一个单元格从文件中的某个位置开始。
我不知道我是否设置了正确的位置,但每次我添加另一个带有 tab.StartNewRow()
的单元格时,生成的新 table 都会重新定位,将最后一个单元格作为位置参考,将之前的从那个点向上 添加单元格 ,而我想从那个点向下添加单元格 。
我应该使用哪种方法?那是我的代码:
以前我使用 tab1.SetFixedPosition(20, heigh, width);
然后,为了添加其他单元格:
if (mylistbox.Items.Count > 0)
{
tab1.AddCell("FIRST CELL");
tab1.StartNewRow();
for (int i = 0; i < mylistbox.Items.Count; i++)
{
tab1.AddCell(mylistbox.Items[i].ToString());
tab1.StartNewRow();
}
doc.Add(tab1);
}
[编辑 #2] 为了更好地解释我的问题
我必须放置 5 个 tables,它们必须从某个点向下增长,在文档中以相等的距离、相同的高度和宽度放置。这张图片解释了结果应该如何:
在 WPF 应用程序中,我有一个包含 5 个项目的 ListBox
,编号为 1 到 5。这应该与 WinForms 非常相似。
CreatePercentArray
的大小等于一行中的列数。
一篇关于表格的有趣文章:link
private void CreateListBoxTable(Document pdfDoc)
{
// Create an array where each item has an equal width, and use the entire pdf width
// The CreatePercentArray takes a size which is equal to the amount of columns in a row
// By using percentages, they will automatically adapt
// Use CreatePointArray for exacter measurements
var table = new Table(UnitValue.CreatePercentArray(2)).UseAllAvailableWidth();
if (!MyListBox.Items.IsEmpty)
{
foreach (var listBoxItem in MyListBox.Items)
{
table.AddCell(((ListBoxItem) listBoxItem).Content.ToString());
}
}
// Adds table to document
pdfDoc.Add(table);
// Closes document
pdfDoc.Close();
}