How ibnnuus/pdf-compressor-cli works
Mursal PDF Compressor offers two user-facing paths: CLI single/batch jobs and a Flask web application with uploads, downloads, accounts, subscriptions, and administration. Both center on PDF compression, with preset-driven validation, Ghostscript processing, structural optimization, and output reporting. The README documents the compression stages and capabilities; sampled excerpts do not expose all Flask route wiring, so uncertain web-to-service links are omitted.
Main entry points: engine.py Compression engine · app.py Flask routes · commands.py CLI commands · main.py CLI entry point
Components 20
CLI
- CLI entry point
main.py - CLI commands
compressor/cli/commands.py
Web application
- Flask routes
app.py - Upload and results UI
static/js/main.js - Page templates
templates - Admin controls
static/js/admin.js
Compression pipeline
- Compression engine
compressor/core/engine.py - Quality presets
compressor/presets/__init__.py - PDF validation
compressor/utils/validator.py - Image recompression
compressor/core/image_compressor.py - Ghostscript runner
compressor/utils/ghostscript.py - PDF optimization
compressor/core/optimizer.py - File utilities
compressor/utils/file_utils.py - Compression result
compressor/core/result.py
Accounts and billing
- Application records
models.py - Midtrans
- Admin pages
templates/admin
Other components
- CLI user
- Web user
- Ghostscript
Connections 20
- CLI user → CLI entry point: runs command
- CLI entry point → CLI commands: dispatches
- CLI commands → Compression engine: compresses PDFs
- CLI commands → Quality presets: lists presets
- Web user → Upload and results UI: uploads PDF
- Upload and results UI → Flask routes: posts request
- Flask routes → Application records: reads and writes
- Flask routes → Midtrans: verifies payment
- Flask routes → Page templates: renders pages
- Admin controls → Flask routes: posts admin actions
- Flask routes → Admin pages: renders admin pages
- Compression engine → Quality presets: loads settings
- Compression engine → PDF validation: validates input
- Compression engine → Image recompression: optional preprocessing
- Compression engine → Ghostscript runner: runs compression
- Ghostscript runner → Ghostscript: launches process
- Compression engine → PDF optimization: optimizes PDF
- Compression engine → File utilities: reads file sizes
- Compression engine → Compression result: builds result
- Flask routes → Compression engine: compresses upload