void DoMerge(string outputFileName) { try { progressDialog.SetProgress(0); } catch (ObjectDisposedException) { progressDialog = new MergeProgressDialog(); progressDialog.SetProgress(0); } progressDialog.SetMaximum(pdfFiles.Count); SetNativeEnabled(false); progressDialog.Show(this); var docs = new List <PdfDocument>(); var outputDoc = new PdfDocument() { Version = pdfSettingsWindow.PDFVersion, PageLayout = pdfSettingsWindow.PageLayout }; foreach (string file in pdfFiles) { docs.Add(PdfReader.Open(file, PdfDocumentOpenMode.Import)); } int progress = 1; foreach (var doc in docs) { CopyPages(doc, outputDoc); doc.Dispose(); progressDialog.SetProgress(progress); progress++; Application.DoEvents(); } outputDoc.Save(outputFileName); outputDoc.Dispose(); docs.Clear(); docs = null; GC.Collect(); progressDialog.Hide(); SetNativeEnabled(true); Focus(); MessageBox.Show($"Successfully merged {pdfFiles.Count} PDF files!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information); }
public MainForm() { InitializeComponent(); Load += MainForm_Load; KeyDown += MainForm_KeyDown; KeyUp += MainForm_KeyUp; SystemColorsChanged += MainForm_SystemColorsChanged; KeyPreview = true; pdfFiles = new ObservableCollection <string>(); filesListBox.DataSource = pdfFiles; filesListBox.KeyDown += FilesListBox_KeyDown; progressDialog = new MergeProgressDialog(); aboutDialog = new AboutDialog(); pdfSettingsWindow = new PDFSettingsWindow(); folderBrowserDialog = new VistaFolderBrowserDialog(); }