使用iTextSharp生成第二个PDF时出现文件访问权限错误
解决iTextSharp批量生成PDF时的文件权限问题
最近用iTextSharp做PDF生成功能时踩了个坑:第一次生成PDF毫无问题,但生成第二个的时候直接抛出文件访问权限不足的错误,报错的代码行正好是pdfDoc.Open()。
一开始我就怀疑是资源没正确释放,排查后发现问题根源出在我的代码结构上——我把Document对象定义成了类级别的共享实例:
Shared pdfDoc As New Document()
这种情况下,第一个PDF生成后,这个共享的Document实例并没有完全释放掉占用的文件资源,导致第二次生成时文件被锁定,自然就拿不到访问权限了。
找到问题后,解决起来就很简单:把Document的创建逻辑移到GeneratePDF方法内部,每次生成PDF都新建一个Document实例。这样每次生成任务完成后,对应的资源会随着方法执行结束被自动回收,不会再出现资源占用的情况,现在已经能正常批量生成多个PDF文件了。
内容的提问来源于stack exchange,提问作者Jeffrey Lionel van Houdt
相关产品推荐
相关产品推荐

