C#PDF表格在错误位置添加行
[由于对答案的误解而编辑] 我正在用C语言编写一个简单的程序,用iText7创建PDF文件。 在这个PDF中,我添加了一个表,它的第一个单元格从文件中的某个位置开始 我不知道我是否正确设置了位置,但每次我用C#PDF表格在错误位置添加行,c#,winforms,itext,windows-forms-designer,itext7,C#,Winforms,Itext,Windows Forms Designer,Itext7,[由于对答案的误解而编辑] 我正在用C语言编写一个简单的程序,用iText7创建PDF文件。 在这个PDF中,我添加了一个表,它的第一个单元格从文件中的某个位置开始 我不知道我是否正确设置了位置,但每次我用tab.StartNewRow()添加另一个单元格时,生成的新表将以最后一个单元格为位置参考重新定位,将先前添加的单元格从该点向上放置,而我想从该点向下添加单元格。 我应该使用哪种方法?这是我的密码: 之前,我使用tab1.SetFixedPosition(20,高,宽)设置第一个表格单元格的
tab.StartNewRow()
添加另一个单元格时,生成的新表将以最后一个单元格为位置参考重新定位,将先前添加的单元格从该点向上放置,而我想从该点向下添加单元格。
我应该使用哪种方法?这是我的密码:
之前,我使用tab1.SetFixedPosition(20,高,宽)设置第一个表格单元格的位置代码>
然后,为了添加其他单元格:
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);
}
if(mylistbox.Items.Count>0)
{
表1.添加单元格(“第一单元格”);
表1.StartNewRow();
对于(int i=0;i
[EDIT#2]以便更好地解释我的问题
我必须在文档中放置5个表,它们必须从某个点向下生长,以相等的距离、相同的高度和宽度放置。此图说明了其结果:
在WPF应用程序中,我有一个带有5个项目的列表框,编号为1到5。这应该非常类似于WinForms
CreatePercentArray
的大小等于一行中的列数
一篇关于表格的有趣文章:
谢谢你的回答,但我解释得很糟糕,这是我的错,我不确定你是否理解我的问题。不管怎样,我会试试你的方法,如果你能再读一遍我的问题,我会很高兴的。非常感谢你!!您好,我尝试过使用您的精确代码,而不使用SetFixedPosition
,并且使用一个只有一列的表。即使程序正在运行,也可以按您的方式添加项目,这不会影响“我的表”的位置,它只是垂直和向下添加项目。第一个项目添加在顶部,最后一个项目添加在底部。我仍然不知道您的确切问题是什么,以及它是如何发生的。这样做当然有效,但我想将表格放在文档中的特定位置。因此,如果不使用SetFixedPosition,问题就解决了,但表格是随机放置的。我需要一种方法,将表格的第一个单元格放置在自定义位置,同时使其向下生长。Shello,我编辑了我的问题,改进了我的问题解释,并画了一张图,以更好地解释结果,感谢您的耐心@mayfair这确实是SetFixedPosition
所做的,它被记录为指定的坐标对应于元素的左下角,并向上增长。因此。。。。你知道一种方法吗?它以表格顶部作为参考,并使其向下增长。我们不把“已解决”放在问题中。你已经接受了一个答案,这就足够了。错,它不起作用。它将下一个表置于上一个表之下,因为它计算相对于上一个表项的位置。您是否考虑过在所讨论的页面上创建一个画布
,根据需要使用左、上、右边距,并且底部向下足够远以允许任何预期的表大小,然后将不带SetFixedPosition
的表添加到该画布
?
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();
}