iTextSharp异常:"无法计算单元格的尺寸。"

时间:2015-09-02 14:02:01

标签: c# itextsharp

尝试使用iTextSharp Library运行创建Pdf文档的简单示例(稍作修改)。获得例外"无法计算单元格的尺寸。"

Line" cell.Left = 10f;"在valueCell函数中,抛出异常"无法计算单元格的大小。"。评论这一行一切正常。这个例外可能是什么原因?

        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();
        }

1 个答案:

答案 0 :(得分:2)

有几件事。

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

其次,Table类被更强大的PdfPTable类所取代。我很确定在旧系列中存在这种情况,但无论你是否总是想将它用于与表相关的工作。

第三,如果设置默认单元格的"左侧"将两列表格固定到固定位置,第二列是否只位于第一列的顶部?根据这种理解,你应该有可能不应该设置这些属性,只需让iText为你处理它。