codice:
If flag = "inserisci" Then
If IsPasswordProtected(login.percorsodoc.Text & "\" & url) Then
MsgBox("Documento già protetto con password", MsgBoxStyle.Information)
Me.Close()
Else
Dim FileName As String = login.percorsodoc.Text & "\" & url
Dim PasswordUser As String = InputBox("Inserisci la password da applicare", "Proteggi documento")
Dim PasswordOwner As String = ""
If Not PasswordUser = "" Then
'Crea un nuovo file dove viene cambiata la password
ChangePasswordPDF(FileName, login.percorsodoc.Text & "\" & url & "_temp.pdf", PasswordOwner, PasswordUser)
'elimina file vecchio per sostituirlo col nuovo
If IO.File.Exists(login.percorsodoc.Text & "\" & url & "_temp.pdf") Then IO.File.Delete(login.percorsodoc.Text & "\" & url)
' rinomina
System.IO.File.Move(login.percorsodoc.Text & "\" & url & "_temp.pdf", login.percorsodoc.Text & "\" & url)
Dim mConnect As New ADODB.Connection()
mConnect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & login.percorsodb.Text & ";Jet OLEDB:Database Password=tonyluca"
mConnect.Open()
Dim mRecord As New ADODB.Recordset()
mRecord.Open("Select * From doc where documento = '" + url + "'", mConnect, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
mRecord.Fields("crypt").Value = True
mRecord.Update()
mRecord.Close()
mConnect.Close()
If page = "form1" Then Form1.ListView1.SelectedItems.Item(0).ImageKey = 5 Else piupagine.ListView1.SelectedItems.Item(0).ImageKey = 1
MsgBox("Password inserita correttamente", MsgBoxStyle.Information)
Me.Close()
Else
MsgBox("Documento non protetto", MsgBoxStyle.Information)
Me.Close()
End If
Me.Close()
End If
ElseIf flag = "modifica" Then
If IsPasswordProtected(login.percorsodoc.Text & "\" & url) Then
Dim FileName As String = login.percorsodoc.Text & "\" & url
Dim TempFileName As String = login.percorsodoc.Text & "\" & url & "_temp.pdf"
Dim PasswordVecchia As String = InputBox("Inserisci la vecchia password", "Cambia password")
Dim PasswordNuova As String = InputBox("Inserisci la password da applicare", "Proteggi documento")
If PasswordVecchia = PasswordNuova Then
MsgBox("La passord nuova non può coincidere con quella vecchia", MsgBoxStyle.Exclamation)
Exit Sub
End If
visualizza.Dispose()
piupagine.Dispose()
'Verifica se il file esiste
If System.IO.File.Exists(FileName) Then
'Verifica prima se la password è corretta
If IsPasswordProtectedCorrect(FileName, PasswordVecchia) Then
'Modifica la password al file
ChangePasswordPDF(FileName, TempFileName, PasswordVecchia, PasswordNuova)
'elimina file vecchio per sostituirlo col nuovo
If IO.File.Exists(login.percorsodoc.Text & "\" & url & "_temp.pdf") Then IO.File.Delete(login.percorsodoc.Text & "\" & url)
' rinomina
System.IO.File.Move(login.percorsodoc.Text & "\" & url & "_temp.pdf", login.percorsodoc.Text & "\" & url)
If page = "form1" Then Form1.ListView1.SelectedItems.Item(0).ImageKey = 5 Else piupagine.ListView1.SelectedItems.Item(0).ImageKey = 1
MsgBox("Password modificata correttamente", MsgBoxStyle.Information)
Me.Close()
Else
'restituisce il messaggio d'errore che la password è sbagliata
MsgBox("Errore la Password inserita non è corretta", vbCritical, "ATTENZIONE!!")
Me.Close()
End If
Else
MsgBox("File non esistente", vbCritical, "ATTENZIONE!!")
Me.Close()
End If
Me.Close()
Else
MsgBox("Documento non protetto da password", MsgBoxStyle.Information)
Me.Close()
End If
ElseIf flag = "eliminapsw" Then
If IsPasswordProtected(login.percorsodoc.Text & "\" & url) Then
Dim FileName As String = login.percorsodoc.Text & "\" & url
Dim TempFileName As String = login.percorsodoc.Text & "\" & url & "_temp.pdf"
Dim PasswordVecchia As String = InputBox("Inserisci la password", "Cambia password")
'Verifica se il file esiste
If System.IO.File.Exists(FileName) Then
'Verifica prima se la password è corretta
If IsPasswordProtectedCorrect(FileName, PasswordVecchia) Then
'Elimina la password al file
ChangePasswordPDF(FileName, TempFileName, PasswordVecchia, "")
'elimina file vecchio per sostituirlo col nuovo
If IO.File.Exists(login.percorsodoc.Text & "\" & url & "_temp.pdf") Then IO.File.Delete(login.percorsodoc.Text & "\" & url)
' rinomina
System.IO.File.Move(login.percorsodoc.Text & "\" & url & "_temp.pdf", login.percorsodoc.Text & "\" & url)
Dim mConnect As New ADODB.Connection()
mConnect.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & login.percorsodb.Text & ";Jet OLEDB:Database Password=tonyluca"
mConnect.Open()
Dim lista As ListViewItem
Dim mRecord As New ADODB.Recordset()
mRecord.Open("Select * From doc where documento = '" + url + "'", mConnect, ADODB.CursorTypeEnum.adOpenKeyset, ADODB.LockTypeEnum.adLockOptimistic)
mRecord.Fields("crypt").Value = False
mRecord.Update()
mRecord.Close()
mConnect.Close()
If page = "form1" Then Form1.ListView1.SelectedItems.Item(0).ImageKey = 4 Else piupagine.ListView1.SelectedItems.Item(0).ImageKey = 0
MsgBox("Password eliminata correttamente", MsgBoxStyle.Information)
Me.Close()
Else
'restituisce il messaggio d'errore che la password è sbagliata
MsgBox("Errore la Password inserita non è corretta", vbCritical, "ATTENZIONE!!")
Me.Close()
End If
Else
MsgBox("File non esistente", vbCritical, "ATTENZIONE!!")
Me.Close()
End If
Me.Close()
Else
MsgBox("Documento non protetto da password", MsgBoxStyle.Information)
Me.Close()
End If
Me.Close()
End If
'Verifica se la password è corretta per aprire il file
Private Function IsPasswordProtectedCorrect(ByVal pdfFullname As String, ByVal Passwords As String) As Boolean
Try
Dim pdfReader As New PdfReader(pdfFullname, New System.Text.ASCIIEncoding().GetBytes(Passwords))
Return True
Catch generatedExceptionName As BadPasswordException
Return False
End Try
End Function
'Verifica se il file è protetto da password
Private Function IsPasswordProtected(ByVal pdfFullname As String) As Boolean
Try
Dim pdfReader As New PdfReader(pdfFullname)
Return False
Catch generatedExceptionName As BadPasswordException
Return True
End Try
End Function
''' <summary>
''' Cambia password al file PDF
''' </summary>
''' <param name="sourcePdfPath">Percorso del file sorgente PDF (ex. c:\demo.pdf)</param>
''' <param name="outputPdfPath">Percorso dove salvare il nuovo file PDF (ex. c:\test.pdf)</param>
''' <param name="password">Password Attuale</param>
''' <param name="PasswordNew">Password Nuova</param>
''' <remarks></remarks>
Private Sub ChangePasswordPDF(ByVal sourcePdfPath As String, ByVal outputPdfPath As String, ByVal password As String, ByVal PasswordNew As String)
Try
Dim pageCount As Integer = 0
Dim currentPage As Integer = 0
Dim pdfDoc As iTextSharp.text.Document = Nothing
Dim writer As iTextSharp.text.pdf.PdfCopy = Nothing
Dim page As iTextSharp.text.pdf.PdfImportedPage = Nothing
Dim currentPDF As Integer = 0
Dim pdfReader As New PdfReader(sourcePdfPath, New System.Text.ASCIIEncoding().GetBytes(password))
pdfDoc = New iTextSharp.text.Document(pdfReader.GetPageSizeWithRotation(1))
writer = New iTextSharp.text.pdf.PdfCopy(pdfDoc, New IO.FileStream(outputPdfPath, IO.FileMode.OpenOrCreate, IO.FileAccess.Write))
writer.SetEncryption(PdfWriter.STRENGTH128BITS, PasswordNew, PasswordNew, PdfWriter.AllowCopy)
pageCount = pdfReader.NumberOfPages
pdfDoc.Open()
While currentPage < pageCount
currentPage += 1
pdfDoc.SetPageSize(pdfReader.GetPageSizeWithRotation(currentPage))
pdfDoc.NewPage()
page = writer.GetImportedPage(pdfReader, currentPage)
writer.AddPage(page)
End While
pdfDoc.Close()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Grazie anticipatamente