using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO; using iTextSharp.text.pdf; using iTextSharp.text.xml; using iTextSharp; using Excel = Microsoft.Office.Interop.Excel; using System.Data.OleDb; using System.Diagnostics; namespace Procedure_Pdf_Page_Count { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string[] pdffiles; string selectedPath = ""; private void btnSelectFolder_Click(object sender, EventArgs e) { using (var fbd = new FolderBrowserDialog()) { fbd.Description = "Select the PDF folder"; //fbd.ShowHiddenFiles = true; DialogResult result = fbd.ShowDialog(); selectedPath = fbd.SelectedPath; if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath)) { pdffiles = Directory.GetFiles(fbd.SelectedPath,"*.pdf"); System.Windows.Forms.MessageBox.Show("Files found: " + pdffiles.Length.ToString(), "Message"); } } } private void cntPDFPages_Click(object sender, EventArgs e) { int totalPages = 0; DataTable dt = new DataTable(); dt.Columns.Add("Procedure", typeof(string)); dt.Columns.Add("Page Count", typeof(int)); if (selectedPath == "") { System.Windows.Forms.MessageBox.Show("No folder Seleted. Please select a folder."); return; } try { foreach (string ppath in pdffiles) { PdfReader pdfReader = new PdfReader(ppath); int numberOfPages = pdfReader.NumberOfPages; totalPages += numberOfPages; dt.Rows.Add(new object[] { ppath, numberOfPages }); } dt.DefaultView.Sort = "Page Count desc"; dt = dt.DefaultView.ToTable(); lblTotalPages.Text = totalPages.ToString(); pageCountView.DataSource = dt; DataGridViewColumn col = pageCountView.Columns[0]; col.Width = 350; string dtt = DateTime.Now.ToString("MM/dd/yyyy h:mm tt"); dtt = dtt.Replace('/', '_'); dtt = dtt.Replace(':', '-'); dtt = dtt.Replace(' ', '-'); selectedPath = selectedPath + "\\"; selectedPath = selectedPath + $"{dtt}.csv"; var lines = new List(); string[] columnNames = dt.Columns.Cast().Select(column => column.ColumnName).ToArray(); var header = string.Join(",", columnNames); lines.Add(header); var valueLines = dt.AsEnumerable().Select(row => string.Join(",", row.ItemArray)); lines.AddRange(valueLines); File.WriteAllLines(selectedPath, lines); if (File.Exists(selectedPath)) { btnViewReport.Enabled = true; } else { System.Windows.Forms.MessageBox.Show("Procedure PDF page report does not exists"); return; } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("An Error has occured. Please try again. Error: " + ex.Message); return; } } private void btnViewReport_Click(object sender, EventArgs e) { var ExcelApp = new Excel.Application(); ExcelApp.Workbooks.OpenText(selectedPath, Comma: true); ExcelApp.Visible = true; } //private void pageCountView_CellContentClick(object sender, DataGridViewCellEventArgs e) //{ // System.Windows.Forms.MessageBox.Show("Row Index: " + e.RowIndex.ToString()); //} private void pageCountView_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { DataGridViewCell cell = pageCountView.Rows[e.RowIndex].Cells[e.ColumnIndex]; //System.Windows.Forms.MessageBox.Show("Double Click Row Index: " + cell.Value.ToString()); //System.Windows.Forms.DataGridViewTextBoxCell Process.Start(cell.Value.ToString()); } private void pageCountView_CellMouseEnter(object sender, DataGridViewCellEventArgs e) { if ((e.ColumnIndex == pageCountView.Columns["Procedure"].Index) && (e.RowIndex > -1)) { pageCountView.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = "Double click name to open PDF"; } } } }