Files
Applications/Procedure PDF Page Count App/Form1.cs
T
2026-07-23 10:34:13 -04:00

138 lines
3.9 KiB
C#

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>();
string[] columnNames = dt.Columns.Cast<DataColumn>().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";
}
}
}
}