首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >生成包含两个平行表的PDF

生成包含两个平行表的PDF
EN

Stack Overflow用户
提问于 2018-06-01 03:11:01
回答 1查看 229关注 0票数 1

我正在尝试使用iTextSharp动态生成带有电话簿数据的SQL表的PDF。我的程序目前可以生成一个包含所有需要的数据的表。

不过,PDF的每一页都只有一张长长的表格在中间。我正在尝试格式化的PDF有两个表平行运行在页面上。当表格到达页面底部时,我希望下一个PdfPRow成为下一个表格的顶部。这是我当前尝试使用的C#代码。

我将我的表分解成一个PdfPRows数组。然后,我遍历它们,将每一行添加到一个名为section的新表中。当添加了所需的行数后,我就会嵌套区段表,这是最终表上两个单元格中的一个。当我尝试将这个最后的表添加到PDF时,它抛出了这个错误:

iTextSharp.text.DocumentException:对象引用未设置为对象的实例。在e:\Inetpub\wwwroot\app\cts\phonebook\DefaultPDF.aspx.cs:line 211中的iTextSharp.text.pdf.PdfDocument.Add(IElement元素)在_Default.Page_Load(对象发送者,EventArgs e)的iTextSharp.text.Document.Add(IElement元素)

我认为这意味着最终表的某些部分从未初始化,但我不确定。第一个for循环之后的部分是我试图修复这个错误。这可能不是必须的。

有没有更好的方法来做这件事,还是我做错了?

EN

回答 1

Stack Overflow用户

发布于 2018-06-01 03:52:59

基于所提供的图像,这是我尝试作为开始所做的。

首先,有几个常识。

  1. 2列数据不超过1页。如果是这样的话,这将获得更多的complicated.
  2. Pdf表写入的单元格,然后向下。对于包含3列的表,它将写入第一行中的前3个单元格,然后在2行

中写入第4个单元格

我会将最终的表设置为7个列,6个包含数据,1个作为两个数据集之间的间隔符。然后,我会将行拆分为两个数组。您将需要处理奇数的情况。然后,我将逐个单元格添加每个行,从每个列表中取出第一行,以写入表的第一个数据行。

代码语言:javascript
复制
  PdfPTable FinalTableN = new PdfPTable( 7 );
  PdfPRow[] n = PDFtableN.Rows.ToArray();

  int half = n.Length/2;
  PdfPRow[] s1 = new PdfPRow[half];
  PdfPRow[] s2 = new PdfPRow[half];

  for (int h = 0; h < half; h++ )
    s1[h] = n[h];
  for ( int h = half; h < n.Length; h++ )
    s2[h-half] = n[h];

  for ( int h = 0; h < half; h++ ) {
    FinalTableN.AddCell( s1[h].GetCells()[0] );
    FinalTableN.AddCell( s1[h].GetCells()[1] );
    FinalTableN.AddCell( s1[h].GetCells()[2] );
    FinalTableN.AddCell( "" );
    FinalTableN.AddCell( s2[h].GetCells()[0] );
    FinalTableN.AddCell( s2[h].GetCells()[1] );
    FinalTableN.AddCell( s2[h].GetCells()[2] );
  }

通过向PdfPTable构造函数提供值的float7而不是列数,可以控制列的宽度

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50631257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档