C# iTextSharp例外:“;单元格的尺寸可以';不可计算。”;
尝试运行使用iTextSharp库创建Pdf文档的简单示例(稍作修改)。获取异常“无法计算单元格的维度” valueCell函数中的行“cell.Left=10f;”抛出异常“无法计算单元格的尺寸”。评论这句话,一切都很好。这一例外的原因可能是什么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
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,我鼓励你阅读这篇文章,因为你现在可能真的被报道了