C# iTextSharp例外:“;单元格的尺寸可以';不可计算。”;

C# iTextSharp例外:“;单元格的尺寸可以';不可计算。”;,c#,itextsharp,C#,Itextsharp,尝试运行使用iTextSharp库创建Pdf文档的简单示例(稍作修改)。获取异常“无法计算单元格的维度” valueCell函数中的行“cell.Left=10f;”抛出异常“无法计算单元格的尺寸”。评论这句话,一切都很好。这一例外的原因可能是什么 private static Cell valueCell(string content) { var cell = new Cell(content); cell.B

尝试运行使用iTextSharp库创建Pdf文档的简单示例(稍作修改)。获取异常“无法计算单元格的维度”

valueCell函数中的行“cell.Left=10f;”抛出异常“无法计算单元格的尺寸”。评论这句话,一切都很好。这一例外的原因可能是什么

        private static Cell valueCell(string content)
        {
            var cell = new Cell(content);

            cell.BackgroundColor = new iTextSharp.text.Color(SystemColor.AliceBlue);
            cell.Left = 10f;

            return cell;
        }

        private static void TestPdfExport_iTextSharp()
        {
            var filePath = string.Format("D:\\Temp\\GeneratedPdf_iTs_{0}.pdf", DateTime.Now.ToString("yy-MM-dd hh mm ss"));

            // step 1: creation of a document-object
            Document document = new Document();

            try
            {
                // step 2: we create a writer that listens to the document
                // and directs a PDF-stream to a file

                PdfWriter writer = PdfWriter.GetInstance(document,
                                   new FileStream(filePath, FileMode.Create));

                // step 3: we open the document
                document.Open();

                // step 4: we create a table and add it to the document
                Table aTable = new Table(2, 2);    // 2 rows, 2 columns
                aTable.DefaultCell.Left = 10f;
                aTable.DefaultCell.Bottom = 10f;

                aTable.AddCell(valueCell("Metric"));
                aTable.AddCell(valueCell("Current Value"));

                aTable.AddCell(valueCell("Leverage"));
                aTable.AddCell(valueCell("3.2"));

                document.Add(aTable);   
            }
            catch (DocumentException de)
            {

            }


            // step 5: we close the document
            document.Close();
        }
有几件事

首先,您正在使用一个
,这意味着您可能正在使用一个旧的、过时的、不受支持的iTextSharp版本,可能是4.1.6。如果是这样,出于兼容性和潜在的法律原因,您应该升级到最新的5.x系列

其次,
Table
类被更强大的
PdfPTable
类所取代。我很确定这在旧的系列中已经存在,但不管怎样,您总是希望将其用于与表相关的工作


第三,如果将两列表的“默认单元格的左侧”设置为固定位置,第二列是否正好位于第一列的顶部?有了这样的理解,您可能不应该设置这些属性,这应该是有意义的,让iText为您处理好它。

1。我正在慎重地使用旧版本来解决法律问题。这个旧版本是在LGPL许可下的。我用Left属性填充,用PdfTable替换它,修复了这个问题,因为它有PaddingLeft属性。谢谢,很高兴听到!至于LGPL,我鼓励你阅读这篇文章,因为你现在可能真的被报道了