|
-
Apr 24th, 2013, 12:39 PM
#1
Thread Starter
Fanatic Member
Error when creating pdf with itextsharp
I am trying to write on an existing pdf and get the following error:
System.IO.IOException: The process cannot access the file 'c:\www\vhosts\domain.com\httpdocs\certificates_out\####xxxxx.pdf' because it is being used by another process. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs
The weird thing is it still creates it and appears to be working just I keep getting the error.
Any thoughts? I tried having a Using but that didn't work.
Code:
''' <summary>
''' fnCreateCertificate is to create a certificate file and save on the server.
''' </summary>
''' <returns>saved file and full path</returns>
''' <remarks></remarks>
Public Function fnCreateCertificate() As String
'determine the full path of target file
_TargetFullFolderFilePath = _TargetFolderPath & _TargetFilename
'------ READ and WRITE TO PDF --------
Dim reader As PdfReader = New PdfReader(_SourcePDFBaseFile)
Dim n As Integer = reader.NumberOfPages
Dim psize As iTextSharp.text.Rectangle = reader.GetPageSize(1)
Dim width As Single = psize.Width
Dim height As Single = psize.Height
Dim doc As Document = New Document(psize, 50, 50, 50, 50)
''create file stream
'Dim fsFile As Stream = New FileStream(_TargetFullFolderFilePath, FileMode.Create)
Try
'The writer object is responsible for creating the actual PDF file.
Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream(_TargetFullFolderFilePath, FileMode.Create)) '<------- THIS IS WHERE THE ERROR IS POINTING TO
'Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream(_TargetFullFolderFilePath, FileMode.Create))
'open document
doc.Open()
Dim cb As PdfContentByte = writer.DirectContent
Dim page1 As PdfImportedPage = writer.GetImportedPage(reader, 1)
cb.AddTemplate(page1, 0, 0)
'tell the ContentByte we're ready to draw text
cb.BeginText()
Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
Dim bfBold As BaseFont = BaseFont.CreateFont(BaseFont.TIMES_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)
cb.SetFontAndSize(bfBold, 18)
'draw some text on a certain position
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, _NameOnCertificate, psize.GetRight(0) / 2, _iYPos, 0)
cb.ShowTextAligned(PdfContentByte.ALIGN_CENTER, _CertificateDateScore, psize.GetRight(0) / 2, 282, 0)
'tell the contentByte, we've finished drawing text
cb.EndText()
'fsFile.Dispose()
Catch de As Exception
Dim oSE As clsSendEmail = New clsSendEmail
oSE.FormSendEmail(System.Configuration.ConfigurationManager.AppSettings("EMAIL-ADMIN"), "The following error occured: " & de.ToString, "Error")
Finally
'close the document
doc.Close()
'fsFile.Dispose()
End Try
Return _TargetFullFolderFilePath
End Function
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|