// Close and reopen the document from the file - useful if you've made changes to the PDF private void RefreshButton_Click(object sender, EventArgs e) { // We only need to refesh if a doc is open if (PDFDoc != null) { if (docWasModified) { runSaveDialog(); } // Clear the existing views mainTree.Nodes.Clear(); clearDataGrid(); PDFDoc.Dispose(); // If we opened with a password, use it again if (currPassword != null) { PDFDoc = new Document(currFilePath, currPassword, PermissionRequestOperation.Open, false); } else { PDFDoc = new Document(currFilePath); } // Now repopulate the tree GrabDocRootAndInfo(); // Re-initialize the data view InitDataView(); editor = new PDFObjectExplorer(PDFDoc, mainTree, dataGridView); } }
// Open a PDF to examine private void OpenPDFButton_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "PDF File (*.pdf)|*.pdf"; dialog.Title = "Select a PDF file"; DialogResult result = dialog.ShowDialog(); if (result == System.Windows.Forms.DialogResult.OK) { String FileName = dialog.FileName; try { // Dispense with the previous PDF (if any) if (PDFDoc != null) { if (docWasModified) { runSaveDialog(); } PDFDoc.Dispose(); } mainWindow.ActiveForm.Text = FileName; // First attempt to open the document with no password try { PDFDoc = new Document(FileName); currPassword = null; // Null out the password if we didn't need it } catch (Exception fileOpenException) { string exceptionMessage = fileOpenException.Message; // Trap password-required exception if (exceptionMessage.Contains("1073938471")) { // Prompt user for a password string password = ""; frmPassword passwordForm = new frmPassword(); DialogResult passwordFormResult = passwordForm.ShowDialog(); try { if (passwordFormResult == DialogResult.OK) { password = passwordForm.password; PDFDoc = new Document(FileName, password, PermissionRequestOperation.Open, false); currPassword = password; // Save the password } // If not OK, user cancelled. Abandon the open, no document available. else { mainTree.Nodes.Clear(); mainTree.Nodes.Add("(no document)"); return; } } catch (Exception fileOpenWithPasswordException) { // Just throw to the outer handler throw fileOpenWithPasswordException; } } } // Now repopulate the tree GrabDocRootAndInfo(); // Re-initialize the data view InitDataView(); editor = new PDFObjectExplorer(PDFDoc, mainTree, dataGridView); // Save the file path currFilePath = FileName; } catch (Exception exc) { MessageBox.Show("The File " + FileName + " cannot be opened. \n\n" + exc.ToString()); } } }