Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

PDF Manager Pro

A command-line PDF management tool built with Python. Manage your PDF files entirely from the terminal — merge, split, extract pages, rename, and delete, with color-coded output and automatic logging included out of the box.


Table of Contents


Overview

PDF Manager Pro is a terminal-based application that brings the most common PDF operations under one roof. Instead of reaching for heavyweight GUI software or unreliable online tools, this project lets you work with PDF files locally, quickly, and without leaving the command line.

The application uses PyPDF2 for PDF manipulation, colorama for color-coded terminal output, and tabulate for clean, readable table displays.


Sample Files

The following sample PDFs were used to demonstrate all features shown in the screenshots below.

Sample - 1.pdf — a 2-page document containing pages "HI" and "Hello"

Sample 1 PDF open in VS Code

Sample - 2.pdf — a 2-page document containing pages "Welcome" and "Thank You"

Sample 2 PDF open in VS Code


Features

FeatureDescription
List PDFsView all PDF files in the input folder with name, page count, and file size
PDF InformationDisplay detailed metadata for any selected PDF
Merge PDFsCombine two or more PDFs into a single output file
Split PDFBreak a PDF into individual single-page files
Extract PagesPull a specific page range from a PDF into a new file
Rename PDFRename any PDF file in the input folder
Delete PDFSafely delete a PDF with a confirmation prompt
LoggingAll operations are automatically recorded to a log file

Project Structure

05-PDF-Manager/
│
├── app.py # Main application entry point and menu handlers
├── pdf_manager.py # Core PDF operations (merge, split, extract, rename, delete)
├── utils.py # Banner, menu display, and color-coded message helpers
├── requirements.txt # Python dependencies
│
├── pdfs/
│ ├── input/ # Place your source PDF files here
│ └── output/ # All generated files are saved here
│
├── screenshots/ # Screenshots used in this README
│
└── logs/
└── pdf_manager.log # Auto-generated operation log

Requirements

  • Python 3.8 or higher
  • pip (Python package manager)

Python dependencies:

PyPDF2
colorama
tabulate

Installation

1. Clone or download this repository

git clone https://github.com/your-username/pdf-manager-pro.git
cd pdf-manager-pro

2. Create and activate a virtual environment (recommended)

# Windows
python -m venv venv
venv\Scripts\activate
# macOS / Linux
python -m venv venv
source venv/bin/activate

3. Install the dependencies

pip install -r requirements.txt

Usage

1. Add your PDF files to the input folder

pdfs/input/

The pdfs/input/ and pdfs/output/ folders are created automatically on the first run if they do not exist.

2. Run the application

python app.py

3. Select an option from the interactive menu and follow the prompts


Screenshots

Main Menu

The application opens with a banner and a numbered menu. Enter any number from 1 to 8 to begin.

Main menu of PDF Manager Pro


List PDFs

Option 1 scans the pdfs/input/ folder and displays all PDF files in a formatted table showing the file number, name, page count, and size.

List of PDF files displayed in a table


PDF Information

Option 2 lets you select a file by number and displays its name, page count, and size in a dedicated info table.

PDF information view for Sample - 1.pdf


Merge PDFs

Option 3 asks you to select files by number separated by commas, then prompts for an output filename. The merged file is saved to pdfs/output/.

Merge operation showing two PDFs selected and output named merged.pdf

The merged output file opens as a 4-page PDF combining all pages from both source files in order.

merged.pdf open in VS Code showing all 4 combined pages


Split PDF

Option 4 splits every page of a selected PDF into its own individual file. All page files are saved inside a named subfolder under pdfs/output/.

Split operation showing Sample - 1.pdf split into 2 pages

The output folder shows the individual page files created by the split operation alongside previously generated files.

VS Code file explorer showing the split output folder with page files


Extract Pages

Option 5 extracts a specific range of pages from a selected PDF into a new file. Enter a start page, an end page, and an output filename.

Extract pages operation with page range 1 to 2 and output named extracted.pdf

The extracted file appears alongside all other output files in the pdfs/output/ folder.

VS Code file explorer showing extracted.pdf in the output folder


Delete PDF

Option 7 lists available files and asks you to confirm before permanently deleting the selected PDF.

Delete operation showing confirmation prompt and success message

After deletion, the input folder reflects the removal with only the remaining file visible.

VS Code file explorer showing the input folder after deletion


Folder Layout

After running a few operations, your project folder will look like this:

pdfs/
├── input/
│ └── Sample.pdf
│
└── output/
├── merged.pdf
├── extracted.pdf
└── Sample - 1_pages/
├── Sample - 1_page_1.pdf
└── Sample - 1_page_2.pdf

All output is organized cleanly in pdfs/output/. Split files are grouped into a named subfolder based on the source PDF filename.


Logging

Every operation is automatically logged to logs/pdf_manager.log. The file is created on first run and grows incrementally across sessions, giving you a full audit trail.

Example log entries:

2026-08-10 10:15:03 - INFO - PDF Manager Pro started
2026-08-10 10:15:10 - INFO - Listed 2 PDF file(s)
2026-08-10 10:15:22 - INFO - Selected PDF: Sample - 1.pdf
2026-08-10 10:15:35 - INFO - Merged 2 PDFs into merged.pdf
2026-08-10 10:16:01 - INFO - Split Sample - 1.pdf into 2 pages
2026-08-10 10:16:20 - INFO - Extracted pages 1-2 from Sample - 1.pdf into extracted.pdf
2026-08-10 10:17:03 - INFO - Deleted PDF: Sample - 2.pdf
2026-08-10 10:17:10 - INFO - PDF Manager Pro closed

License

This project is open-source and available under the MIT License.

Copyright (c) 2026 Sanjansah


Built as part of a Python learning project series.

About

A command-line PDF management tool built with Python. Merge, split, extract pages, rename, and delete PDF files from an interactive terminal menu with color-coded output and automatic logging.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages