Inherits Form Private PDFEnc As New PDFEncryption() Private pb As New PickBox() Private reader As PdfReader = Nothing Private certificateData As X509Certificate2 = Nothing Public Sub New() InitializeComponent() pb.WireControl(sigPicture) End Sub Private Sub debug(txt As String) DebugBox.AppendText(txt & System.Environment.NewLine) End Sub Private Sub button4_Click(sender As Object, e As EventArgs) Dim openFile As System.Windows.Forms.OpenFileDialog openFile = New System.Windows.Forms.OpenFileDialog() openFile.Filter = "PDF files *.pdf|*.pdf" openFile.Title = "Select a file" If openFile.ShowDialog() <> DialogResult.OK Then Return End If inputBox.Text = openFile.FileName Try reader = New PdfReader(inputBox.Text) Catch Dim dlg As New PwdDialog() If dlg.ShowDialog() = DialogResult.OK Then Dim pwd As String = TryCast(dlg.Controls("pwdTextBox"), TextBox).Text reader = New PdfReader(inputBox.Text, Tools.StrToByteArray(pwd)) Else inputBox.Text = "" Return End If End Try Dim md As New MetaData() md.Info = reader.Info authorBox.Text = md.Author titleBox.Text = md.Title subjectBox.Text = md.Subject kwBox.Text = md.Keywords creatorBox.Text = md.Creator prodBox.Text = md.Producer numberOfPagesUpDown.Maximum = reader.NumberOfPages numberOfPagesUpDown.Minimum = InlineAssignHelper(numberOfPagesUpDown.Value, 1) numberOfPagesUpDown_ValueChanged(numberOfPagesUpDown, Nothing) sigPicture.Left = 0 sigPicture.Top = sigPicture.Parent.Height - sigPicture.Height sigPicture_Move(sigPicture, Nothing) sigPicture.Width = 50 sigPicture.Height = 20 sigPicture_Resize(sigPicture, Nothing) End Sub Private Sub button5_Click(sender As Object, e As EventArgs) Dim saveFile As System.Windows.Forms.SaveFileDialog saveFile = New System.Windows.Forms.SaveFileDialog() saveFile.Filter = "PDF files (*.pdf)|*.pdf" saveFile.Title = "Save PDF File" If saveFile.ShowDialog() <> DialogResult.OK Then Return End If outputBox.Text = saveFile.FileName End Sub Private Sub ProcessBtn_Click(sender As Object, e As EventArgs) debug(("*****Started (document = " + inputBox.Text & " => ") + outputBox.Text & ") ") debug("Checking certificate ...") Dim myCert As Cert = Nothing Try Dim tsaUrl As String = If([String].IsNullOrEmpty(TSAUrlTextBox.Text), Nothing, TSAUrlTextBox.Text) If certificateData IsNot Nothing Then 'X509Certificate2 cert = certsListBox.SelectedItem as X509Certificate2; Dim bytes As Byte() = certificateData.Export(X509ContentType.Pfx, certificatePwdBox.Text) myCert = New Cert(bytes, certificatePwdBox.Text, tsaUrl, tsaLogin.Text, tsaPwd.Text) Else myCert = New Cert(certificateTextBox.Text, certificatePwdBox.Text, tsaUrl, tsaLogin.Text, tsaPwd.Text) End If debug("Certificate OK") Catch ex As Exception debug("Warning : No valid certificate found, please make sure you entered a valid certificate file and password") 'debug("Exception : " + ex.ToString()); 'return; debug(" ==> Continue ... the document will not be signed !") End Try debug("Checking encryption options ...") PDFEnc.UserPwd = encUserPwd.Text PDFEnc.OwnerPwd = encOwnerPwd.Text debug("Creating new MetaData object... ") 'Adding Meta Datas Dim MyMD As New MetaData() MyMD.Author = authorBox.Text MyMD.Title = titleBox.Text MyMD.Subject = subjectBox.Text MyMD.Keywords = kwBox.Text MyMD.Creator = creatorBox.Text MyMD.Producer = prodBox.Text debug("Processing document ... ") Dim pdfs As New PDFSigner(inputBox.Text, outputBox.Text, myCert, MyMD) Dim sigAp As New PDFSignatureAP() sigAp.SigReason = Reasontext.Text sigAp.SigContact = Contacttext.Text sigAp.SigLocation = Locationtext.Text sigAp.Visible = SigVisible.Checked sigAp.Multi = multiSigChkBx.Checked sigAp.Page = Convert.ToInt32(numberOfPagesUpDown.Value) sigAp.CustomText = custSigText.Text If sigImgBox.Image IsNot Nothing Then Dim ms As New MemoryStream() sigImgBox.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp) sigAp.RawData = ms.ToArray() ms.Close() End If sigAp.SigX = CSng(sigPosX.Value) sigAp.SigY = CSng(sigPosY.Value) sigAp.SigW = CSng(sigWidth.Value) sigAp.SigH = CSng(sigHeight.Value) pdfs.Sign(sigAp, encryptChkBx.Checked, PDFEnc) debug("Done
") MessageBox.Show("The document has been succesfully processed", "iSafePDF :: Signature done", MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) PDFEnc.Permissions.Add(permissionType.Assembly) PDFEnc.Permissions.Add(permissionType.Copy) PDFEnc.Permissions.Add(permissionType.DegradedPrinting) PDFEnc.Permissions.Add(permissionType.FillIn) PDFEnc.Permissions.Add(permissionType.ModifyAnnotation) PDFEnc.Permissions.Add(permissionType.ModifyContent) PDFEnc.Permissions.Add(permissionType.Printing) PDFEnc.Permissions.Add(permissionType.ScreenReaders) webBrowser1.Navigate("about:blank") If webBrowser1.Document IsNot Nothing Then webBrowser1.Document.Write(String.Empty) End If webBrowser1.DocumentText = Resources.DonateBtn End Sub Private Sub tsaCbx_CheckedChanged(sender As Object, e As EventArgs) TSAUrlTextBox.Enabled = TryCast(sender, CheckBox).Checked tsaLogin.Enabled = TryCast(sender, CheckBox).Checked tsaPwd.Enabled = TryCast(sender, CheckBox).Checked TSALbl1.Enabled = TryCast(sender, CheckBox).Checked TSALbl2.Enabled = TryCast(sender, CheckBox).Checked TSALbl3.Enabled = TryCast(sender, CheckBox).Checked End Sub Private Sub splitContainer1_Panel1_Paint(sender As Object, e As PaintEventArgs) End Sub Private Sub encryptChkBx_CheckedChanged(sender As Object, e As EventArgs) EncryptionGrp.Enabled = TryCast(sender, CheckBox).Checked ProtectionGrp.Enabled = TryCast(sender, CheckBox).Checked If TryCast(sender, CheckBox).Checked Then multiSigChkBx.Checked = False End If End Sub Private Sub encAssemblyChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.Assembly) Else PDFEnc.Permissions.Remove(permissionType.Assembly) End If End Sub Private Sub encCopyChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.Copy) Else PDFEnc.Permissions.Remove(permissionType.Copy) End If End Sub Private Sub encDegPrintChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.DegradedPrinting) Else PDFEnc.Permissions.Remove(permissionType.DegradedPrinting) End If End Sub Private Sub encFillInChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.FillIn) Else PDFEnc.Permissions.Remove(permissionType.FillIn) End If End Sub Private Sub encModAnnotChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.ModifyAnnotation) Else PDFEnc.Permissions.Remove(permissionType.ModifyAnnotation) End If End Sub Private Sub encModContChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.ModifyContent) Else PDFEnc.Permissions.Remove(permissionType.ModifyContent) End If End Sub Private Sub encPrintChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.Printing) Else PDFEnc.Permissions.Remove(permissionType.Printing) End If End Sub Private Sub encScrRdChk_CheckedChanged(sender As Object, e As EventArgs) If TryCast(sender, CheckBox).Checked Then PDFEnc.Permissions.Add(permissionType.ScreenReaders) Else PDFEnc.Permissions.Remove(permissionType.ScreenReaders) End If End Sub Private Sub tabControl1_Selected(sender As Object, e As TabControlEventArgs) End Sub Private Sub tabControl1_Deselected(sender As Object, e As TabControlEventArgs) End Sub Private Sub tabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) ProcessBtn.Visible = Not tabControl1.SelectedTab.Equals(aboutTab) End Sub Private Sub VisitProjectHome(sender As Object, e As LinkLabelLinkClickedEventArgs) 'LinkLabel lnk = sender as LinkLabel; System.Diagnostics.Process.Start("IExplore", "http://isafepdf.eurekaa.org") End Sub Private Sub certTextBox_TextChanged(sender As Object, e As EventArgs) End Sub Private Sub browseBtn_Click(sender As Object, e As EventArgs) Dim openFile As System.Windows.Forms.OpenFileDialog openFile = New System.Windows.Forms.OpenFileDialog() openFile.Filter = "*.jpg|*.gif|*.bmp|*.png" openFile.Title = "Select a file" If openFile.ShowDialog() <> DialogResult.OK Then Return End If sigPicture.Image = InlineAssignHelper(sigImgBox.Image, New Bitmap(openFile.FileName)) End Sub Private Sub numberOfPagesUpDown_ValueChanged(sender As Object, e As EventArgs) Dim rect As iTextSharp.text.Rectangle = reader.GetPageSize(Convert.ToInt32(numberOfPagesUpDown.Value)) pagePreviewPanel.Top = 0 If rect.Width > rect.Height Then pagePreviewPanel.Width = pagePreviewPanel.Parent.Width pagePreviewPanel.Height = Convert.ToInt32((pagePreviewPanel.Width * rect.Height) / rect.Width) Else pagePreviewPanel.Height = pagePreviewPanel.Parent.Height pagePreviewPanel.Width = Convert.ToInt32((pagePreviewPanel.Height * rect.Width) / rect.Height) End If pagePreviewPanel.Left = (pagePreviewPanel.Parent.Width - pagePreviewPanel.Width) / 2 pagePreviewPanel.Top = (pagePreviewPanel.Parent.Height - pagePreviewPanel.Height) / 2 sigPosX.Maximum = Convert.ToInt32(rect.Width) sigPosY.Maximum = Convert.ToInt32(rect.Height) sigWidth.Maximum = Convert.ToInt32(rect.Width) sigHeight.Maximum = Convert.ToInt32(rect.Height) End Sub Private Sub sigPicture_Move(sender As Object, e As EventArgs) Dim rect As iTextSharp.text.Rectangle = reader.GetPageSize(Convert.ToInt32(numberOfPagesUpDown.Value)) Dim X As Decimal = Convert.ToInt32((rect.Width * sigPicture.Left) / pagePreviewPanel.Width) Dim Y As Decimal = sigPicture.Parent.Height - sigPicture.Top - sigPicture.Height Y = Convert.ToInt32((rect.Height * CSng(Y)) / pagePreviewPanel.Height) If X > sigPosX.Maximum Then X = sigPosX.Maximum End If If X < sigPosX.Minimum Then X = sigPosX.Minimum End If If Y > sigPosY.Maximum Then Y = sigPosY.Maximum End If If Y < sigPosY.Minimum Then Y = sigPosY.Minimum End If sigPosX.Value = X sigPosY.Value = Y End Sub Private Sub clearBtn_Click(sender As Object, e As EventArgs) sigPicture.Image = InlineAssignHelper(sigImgBox.Image, Nothing) End Sub Private Sub sigPicture_Resize(sender As Object, e As EventArgs) Dim rect As iTextSharp.text.Rectangle = reader.GetPageSize(Convert.ToInt32(numberOfPagesUpDown.Value)) Dim W As Decimal = Convert.ToInt32((rect.Width * sigPicture.Width) / pagePreviewPanel.Width) Dim H As Decimal = Convert.ToInt32((rect.Height * sigPicture.Height) / pagePreviewPanel.Height) If W > sigWidth.Maximum Then W = sigWidth.Maximum End If If W < sigWidth.Minimum Then W = sigWidth.Minimum End If If H > sigHeight.Maximum Then H = sigHeight.Maximum End If If H < sigHeight.Minimum Then H = sigHeight.Minimum End If sigWidth.Value = W sigHeight.Value = H End Sub Private Sub SigVisible_CheckedChanged(sender As Object, e As EventArgs) sigPanel1.Visible = InlineAssignHelper(sigPanel2.Visible, InlineAssignHelper(sigPanel1.Enabled, InlineAssignHelper(sigPanel2.Enabled, SigVisible.Checked))) End Sub Private Sub groupBox4_Enter(sender As Object, e As EventArgs) End Sub Private Sub selectSertBtn_Click(sender As Object, e As EventArgs) If [String].IsNullOrEmpty(inputBox.Text) OrElse [String].IsNullOrEmpty(outputBox.Text) Then MessageBox.Show("Please go to the 'Document tab' and select a source and a target file first", "iSafePDF :: Action required", MessageBoxButtons.OK, MessageBoxIcon.Warning) Return End If certificateData = Nothing sigPanel.Visible = False certificateTextBox.Text = [String].Empty Dim dlg As New CertificateDialog() If dlg.ShowDialog() = DialogResult.OK Then Dim certs As ListBox = TryCast(dlg.Controls("certsListBox"), ListBox) If certs.SelectedItem IsNot Nothing Then certificateData = TryCast(certs.SelectedItem, X509Certificate2) certificateTextBox.Text = certs.SelectedItem.ToString() Else certificateTextBox.Text = TryCast(dlg.Controls("certTextBox"), TextBox).Text End If certificatePwdBox.Text = TryCast(dlg.Controls("passwordBox"), TextBox).Text sigPanel.Visible = Not [String].IsNullOrEmpty(certificateTextBox.Text) End If End Sub Private Sub splitContainer1_Panel2_Paint(sender As Object, e As PaintEventArgs) End Sub Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, value As T) As T target = value Return value End Function