Transform, edit, and enhance your PDFs with a stunning glassmorphic interface
π― 100% Client-Side β’ π Lightning Fast β’ π¨ Beautiful UI β’ π± Mobile Friendly
Experience PDFusion in action
π Try PDFusion Live!
π± Fully responsive β’ π No installation required β’ π 100% secure
|
π π Glassmorphic UI Modern translucent design with blur effects |
π€ π€ Smart Upload Drag & drop with instant preview |
πΌοΈ πΌοΈ Live Preview Real-time PDF rendering |
π§© π§© Page Reordering Intuitive drag & drop interface |
|
ποΈ ποΈ Page Management Delete unwanted pages instantly |
π π Smart Rotation 90Β° rotation with preview |
ποΈ ποΈ Rich Annotations Text, highlights & more |
πͺ πͺ Smart Filters Grayscale, sepia, brightness |
|
πΎ πΎ Export Options Custom filename & formats |
β‘ β‘ Lightning Fast Optimized performance |
π± π± Mobile Ready Touch-optimized interface |
π π PDF Merger Combine multiple PDFs |
graph TD
A[π Upload PDF] --> B[πΌοΈ React PDF Rendering]
B --> C[βοΈ Edit Tools]
C --> D[π§ PDF-lib Processing]
D --> E[πΎ Download Enhanced PDF]
C --> F[π Add Text]
C --> G[π¨ Highlights]
C --> H[π Rotate/Reorder]
C --> I[π Apply Filters]
- π¨ Frontend: React 19 + Vite for blazing-fast development
- π PDF Rendering:
react-pdffor accurate, fast PDF display - π§ PDF Manipulation:
pdf-libfor client-side PDF operations - πΎ State Management: React hooks for real-time updates
- π― Zero Backend: Everything runs in your browser
- β‘ Performance: Optimized rendering with lazy loading
- Node.js 16+
- npm or yarn package manager
# π₯ Clone the repository
git clone https://github.com/akshit2004/pdfeditor.git
cd pdfeditor
# π¦ Install dependencies
npm install
# π Start development server
npm run dev
# π Open your browser
# Visit http://localhost:5173# π¦ Create optimized build
npm run build
# π Preview production build
npm run preview# Coming soon - Docker support
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "preview"]π¦ PDFusion
βββ π public/
β βββ πΌοΈ logo-removebg-preview.png # App logo
β βββ βοΈ pdf.worker.js # PDF.js worker
β βββ π§ service-worker.js # PWA support
βββ π src/
β βββ π App.jsx # Main app component
β βββ π pages/
β β βββ π landing page/
β β β βββ π landing.jsx # Landing page + PDF merger
β β β βββ π¨ landing.css # Landing styles
β β βββ π PDF-Editor/
β β βββ βοΈ editor.jsx # Main editor logic
β β βββ π¨ editor.css # Editor styling
β β βββ π οΈ EditToolbar.jsx # Edit tools component
β β βββ π FilterToolbar.jsx # Filter tools component
β β βββ π― react-pdf-overrides.css # PDF display customizations
β βββ π assets/ # Static assets
βββ βοΈ package.json # Dependencies & scripts
βββ βοΈ vite.config.js # Vite configuration
βββ π README.md # You are here!
| Component | Purpose | Key Features |
|---|---|---|
π Landing.jsx |
Homepage & PDF Merger | Hero section, file merger, glassmorphic UI |
βοΈ Editor.jsx |
Main PDF Editor | PDF rendering, editing tools, state management |
π οΈ EditToolbar.jsx |
Editing Interface | Text, highlight, reorder, erase tools |
π FilterToolbar.jsx |
Filter Effects | Grayscale, sepia, brightness controls |
- Edit Tools: Modify
EditToolbar.jsx
const EDIT_TOOLS = [
{ icon: <FaYourIcon />, label: 'Your Tool', action: 'yourAction' },
// Add your custom tool here
];- Tool Logic: Update
editor.jsx
const handleEditToolSelect = (tool) => {
if (tool === 'yourAction') {
// Implement your tool logic
}
};Color Scheme: Update CSS variables in editor.css
:root {
--primary-purple: #9d4edd;
--secondary-purple: #c77dff;
--accent-blue: #6a82fb;
/* Customize your colors */
}Glassmorphic Effects: Modify backdrop filters
.glass-element {
backdrop-filter: blur(15px);
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
}- Mobile:
max-width: 768px - Tablet:
769px - 1024px - Desktop:
min-width: 1025px
- β‘ Bundle Size: ~2.1MB (gzipped)
- π First Paint: <1.2s
- π₯οΈ Desktop Score: 98/100
- βΏ Accessibility: AA Compliant
- π‘οΈ 100% Client-Side Processing - Your PDFs never leave your device
- π« No Server Uploads - Complete privacy protection
- β GDPR Compliant - Privacy by design
| Browser | Version | Status |
|---|---|---|
| Chrome | 90+ | β Full Support |
| Firefox | 88+ | β Full Support |
| Safari | 14+ | β Full Support |
| Edge | 90+ | β Full Support |
| Mobile | All Modern | β Optimized |
- π Large PDFs (>50MB) may experience slower loading
- πΌοΈ Image-heavy PDFs require more processing time
- π± Mobile text editing has limited precision
- π€ Font embedding not yet supported
- π€ AI-powered text extraction
- π Cloud storage integration
- π Digital signature support
- π¨ Advanced annotation tools
- π Batch processing
- π Dark/Light theme toggle
- π Real-time collaboration
- π§ Email sharing integration
We welcome contributions! Here's how you can help:
- Check existing issues first
- Use the bug report template
- Include browser/OS information
- Provide steps to reproduce
- Search existing feature requests
- Explain the use case clearly
- Consider implementation complexity
- Provide mockups if possible
# Fork the repository
git clone https://github.com/akshit2004/pdfeditor.git
# Create feature branch
git checkout -b feature/amazing-feature
# Make changes and test
npm run dev
# Commit with conventional commits
git commit -m "feat: add amazing feature"
# Push and create PR
git push origin feature/amazing-feature- Use ESLint configuration
- Follow React best practices
- Add JSDoc comments for complex functions
- Maintain responsive design principles
- Mozilla PDF.js Team - For the amazing PDF rendering engine
- Hopding - For the incredible pdf-lib library
- React Community - For the awesome ecosystem
- You - For using and supporting this project!
