Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#PDF表格在错误位置添加行_C#_Winforms_Itext_Windows Forms Designer_Itext7 - Fatal编程技术网

C#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,高,宽)设置第一个表格单元格的

[由于对答案的误解而编辑]

我正在用C语言编写一个简单的程序,用iText7创建PDF文件。 在这个PDF中,我添加了一个表,它的第一个单元格从文件中的某个位置开始

我不知道我是否正确设置了位置,但每次我用
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();
        }