如果我使用给定的源代码创建pdf,则会出现无法打开pdf文档的问题,例如“ adobe-acrobat”,因为它表示该文件仍在被其他进程使用。我在释放锁的代码中缺少什么?
var a = Guid.NewGuid();
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
PdfWriter writer2 = PdfWriter.GetInstance(pdfDoc, new FileStream(a.ToString()+".pdf", FileMode.Create));
writer2.SetFullCompression();
writer2.CloseStream = true;
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(AppContext.BaseDirectory + "Ehrungsantrag.png");
img.SetAbsolutePosition(0, 0);
img.ScaleAbsoluteHeight(pdfDoc.PageSize.Height);
img.ScaleAbsoluteWidth(pdfDoc.PageSize.Width);
pdfDoc.Open();
pdfDoc.NewPage();
pdfDoc.Add(img);
pdfDoc.Close();
writer2.Close();
Document pdfDoc = null;
PdfWriter writer2 = null;
System.IO.FileStream fs = null;
try
{
var a = Guid.NewGuid();
pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
fs = new FileStream(a.ToString()+".pdf", FileMode.Create);
writer2 = PdfWriter.GetInstance(pdfDoc, fs);
writer2.SetFullCompression();
writer2.CloseStream = true;
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(AppContext.BaseDirectory + "Ehrungsantrag.png");
img.SetAbsolutePosition(0, 0);
img.ScaleAbsoluteHeight(pdfDoc.PageSize.Height);
img.ScaleAbsoluteWidth(pdfDoc.PageSize.Width);
pdfDoc.Open();
pdfDoc.NewPage();
pdfDoc.Add(img);
}
catch (iTextSharp.text.DocumentException dex)
{
// special error handling
}
catch (Exception ex)
{
// generic error handling
}
finally
{
pdfDoc.Close();
pdfDoc = null;
writer2.Close();
// Always close open filehandles explicity
fs.Close();
}