我正在使用以下代码生成pdf。然后它填充gridview,以便用户可以单击刚刚生成的PDF。我收到一条异常消息:Exception type: IOException
该进程无法访问文件'\ Server \ PDFs \ PE10091026-Rev.pdf' 因为它正被另一个进程使用。
如果我生成另一个PDF,则可以打开上一个PDF。
如果没有人打开文件,任何想法都会锁定它吗?
Dim Doc1 As New Document
Dim path As String = "\\server\PDFs\"
Dim myUniqueFileName = String.Format("{0}.pdf", Session("FileName") & "-Rev")
Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(Doc1, New FileStream(path & myUniqueFileName, FileMode.Create))
Doc1.Open()
Dim test As String
test = Session("PDF")
Dim PDFHeader As String
PDFHeader = Session("Header")
Dim imagepath As String = Server.MapPath(".") & "/images/Header.png"
Dim image As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(imagepath)
image.ScalePercent(70.0F)
Dim line1 As New iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.BLACK, Element.ALIGN_LEFT, 1)
Doc1.Add(image)
Doc1.Add(New Paragraph(PDFHeader))
Doc1.Add(New Chunk(line1))
Doc1.Add(New Paragraph(test))
Doc1.Close()
Doc1.Dispose()
答案 0 :(得分:2)
您可能需要使用FileStream
或使用FileStream.Dispose()
语句处理Using
。目前,当您尝试第二次打开时,FileStream
仍在创建模式下打开。
Using fs As New FileStream(Path & myUniqueFileName, FileMode.Create)
Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(Doc1, fs)
Doc1.Open()
Dim test As String
test = Session("PDF")
Dim PDFHeader As String
PDFHeader = Session("Header")
Dim imagepath As String = Server.MapPath(".") & "/images/Header.png"
Dim image As iTextSharp.text.Image = iTextSharp.text.Image.GetInstance(imagepath)
image.ScalePercent(70.0F)
Dim line1 As New iTextSharp.text.pdf.draw.LineSeparator(0.0F, 100.0F, BaseColor.BLACK, Element.ALIGN_LEFT, 1)
Doc1.Add(image)
Doc1.Add(New Paragraph(PDFHeader))
Doc1.Add(New Chunk(line1))
Doc1.Add(New Paragraph(test))
Doc1.Close()
Doc1.Dispose()
End Using