A desktop PDF organizer tool built with Angular and Electron that allows you to view, rearrange, split, and modify PDF documents with an intuitive drag-and-drop interface.
- 📄 Open and View PDFs - Load PDF files and view all pages as thumbnails
- 🔄 Rearrange Pages - Drag and drop pages to reorder them
- ➕ Add/Remove Pages - Duplicate or delete pages as needed
- ✂️ Split PDFs - Split a single PDF into multiple files by page ranges
- 💾 Save Changes - Export your modified PDF with all changes
- 🖥️ Cross-Platform - Works on Windows, macOS, and Linux
- 🎨 Modern UI - Built with PrimeNG for a professional appearance
- Frontend: Angular 19 with signals and standalone components
- Desktop: Electron for cross-platform desktop functionality
- PDF Processing: PDF.js for viewing and PDF-lib for manipulation
- UI Components: PrimeNG with custom styling
- TypeScript: Full type safety throughout the application
- Node.js (v18 or higher)
- npm or yarn package manager
-
Clone or download this project to your local machine
-
Install dependencies:
npm install
If you encounter issues with the terminal, you can install the missing dependencies manually:
npm install pdf-lib pdfjs-dist primeng primeicons @angular/cdk concurrently wait-on
To run the application in development mode with hot reload:
# Start Angular development server and Electron
npm run electron:devThis will:
- Start the Angular development server on http://localhost:4200
- Launch Electron and load the Angular app
- Open developer tools for debugging
To test the Angular application in a browser:
npm run startIf Angular is already running, you can start Electron separately:
npm run electronnpm run build:prod# Create distributable packages
npm run electron:distThis will create installers for your current platform in the dist-electron directory:
- Windows:
.exeinstaller - macOS:
.dmgfile - Linux: AppImage
pdf-organiser/
├── electron/
│ ├── main.js # Electron main process
│ └── preload.js # Preload script for secure IPC
├── src/
│ ├── app/
│ │ ├── services/
│ │ │ └── pdf.service.ts # PDF manipulation service
│ │ ├── app.component.ts # Main application component
│ │ └── app.config.ts # App configuration
│ ├── types/
│ │ └── electron.d.ts # Electron API type definitions
│ ├── index.html # HTML template
│ ├── main.ts # Angular bootstrap
│ └── styles.scss # Global styles
├── dist/ # Built Angular application
├── dist-electron/ # Electron distribution files
├── package.json # Dependencies and scripts
└── README.md # This file
- Via Menu: Use
File > Open PDForCtrl+O(Windows/Linux) /Cmd+O(macOS) - Via Button: Click the "Open PDF" button in the toolbar
- Via File Upload: Use the upload button (web version only)
- Reorder: Drag and drop page thumbnails to rearrange them
- Duplicate: Click the copy icon on any page to duplicate it
- Delete: Click the trash icon to remove a page (with confirmation)
- Click the "Split PDF" button in the toolbar
- Define page ranges (e.g., pages 1-3, 4-6, etc.)
- Specify filenames for each split section
- Click "Split PDF" to create separate files
- Quick Save: Use
Ctrl+S(Windows/Linux) /Cmd+S(macOS) - Save As: Click the "Save PDF" button to choose a new location
Ctrl/Cmd + O: Open PDF fileCtrl/Cmd + S: Save PDF fileF12: Toggle developer tools (development mode)
edit package json and run the git tag and push with version accordingly
- edit package json version
- git tag v1.0.4
- git push origin v1.0.4
run release script which will guide through releasing.