iTextSharp创建的PDF仍在使用中

问题描述 投票:1回答:2

如果我使用给定的源代码创建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();
c# asp.net-core-mvc itext
2个回答
1
投票

0
投票
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(); }
© www.soinside.com 2019 - 2024. All rights reserved.