从v.5.3.3到5.4.2更新iTextSharp NuGet package后,我收到了System.InvalidOperationException: Already closed
个异常。
当我打电话时会发生这种情况:
Document doc = new Document(PageSize.A4);
.
.
.
doc.Close(); // Document is already closed hence the exception
请注意,此代码与iTextSharp 5.3.3
完美配合。
我注释了该行和PDF
已生成但后来iTextSharp
开始输出无法通过Adobe Reader打开的损坏的PDF
文件,也无法打开内置PDF阅读器的Windows 8。
答案 0 :(得分:1)
在Visual Studio中使用代码并利用IntelliSense,我查看了Document
对象上的各种可能方法。我看到有一个名为CloseDocument()
的附加方法,所以我更改了这一行:
doc.Close();
到
doc.CloseDocument();
并猜猜是什么?事情又开始了。没有例外。真棒!
希望它可以帮助将来可能会遇到同样问题的任何人......
很好......在尝试不同的输入选项后,我又开始获得异常......
我明确地打电话给:
pdfReader.Close();
在AppendToDocument
方法中。这是在调用doc.Close();
之前发生的。刚评论了上面一行,异常就消失了。
答案 1 :(得分:0)
使用此代码
private void ceratepdf()
{
using (FileStream msReport = new FileStream(Server.MapPath("~") + "/App_Data/" + DateTime.Now.Ticks + ".pdf", FileMode.Create))
{
//step 1
Document doc = new Document(PageSize.A4, 2f, 2f, 10f, 15f);
PdfWriter pdfWriter = PdfWriter.GetInstance(doc, msReport);
PdfPCell cell;
PdfPTable table = new PdfPTable(4);
cell = new PdfPCell(new Phrase("Incident Details"));
cell.Colspan = 4;
cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
cell.VerticalAlignment = 1;
table.AddCell(cell);
doc.Open();
doc.Add(table);
doc.Close();
}
}