【发布时间】:2018-05-31 19:11:00
【问题描述】:
我正在尝试使用带有电话簿数据 SQL 表的 iTextSharp 动态生成 PDF。我的程序目前可以生成一个包含所有所需数据的表。
PDF 的每一页只有一张长桌在中间。我正在尝试格式化 PDF 以使两个表格在页面下方平行运行。当表格到达页面底部时,我希望下一个 PdfPRow 成为下一个表格的顶部。这是我当前尝试执行此操作的 C# 代码。
我将我的表分解为一组 PdfPRows。然后我遍历这些将每一行添加到一个名为 section 的新表中。当添加了我想要的行数后,我将分区表嵌套在最终表格的两个单元格之一中。当我尝试将此最终表格添加到 PDF 时,它会引发此错误:
iTextSharp.text.DocumentException:对象引用未设置为 对象的实例。在 iTextSharp.text.pdf.PdfDocument.Add(IElement 元素)在 iTextSharp.text.Document.Add(IElement 元素)在 _Default.Page_Load(Object sender, EventArgs e) in e:\Inetpub\wwwroot\app\cts\phonebook\DefaultPDF.aspx.cs:line 211
我认为这意味着决赛桌的某些部分从未初始化,但我不确定。第一个 for 循环之后的部分是我尝试修复此错误。可能没有必要。
有没有更好的方法来做到这一点,还是我做错了?
【问题讨论】:
-
您能发布生成表格的相关代码吗?
-
永远不可能有使用
PdfPRow类的理由。这是一个内部类;保持内部。您使用的是旧版本的 iText(我们不再称它为 iTextSharp)。使用最新版本:iText 7.1.2,您想要实现的目标要简单得多。因此,如果您想在代码方面取得进步并面向未来,请升级。 -
您做错的一件事:将代码发布为屏幕截图。您应该始终将代码作为代码发布。您做错的另一件事:没有提及您正在使用的 iText 版本。