A powerful, customizable PDF generator for creating todo lists and detail pages, optimized for A4 paper and e-readers (Boox, reMarkable, etc.).
- π Flexible Page Formats: A3, A4, A5, Letter, Legal, Tabloid, or custom sizes
- π± E-Reader Optimized: Support for custom resolutions with PPI input (perfect for Boox, reMarkable, Kindle Scribe)
- π¨ Fully Customizable:
- Adjustable margins with auto-scaling
- Configurable dot grid (spacing, size, color)
- Variable items per column (10-30)
- Multiple detail pages per todo (1-5)
- Font sizes for all elements
- Todo number placement options
- πΎ Save/Load Configurations: Store and reuse your favorite settings
- ποΈ Live Preview: See changes instantly before generating
- π High Performance: Uses Form XObject for efficient PDF generation
- Clean, intuitive web interface
- Real-time preview of your PDF layout
- Organized configuration sections
- Index Page: Quick navigation to all todo pages
- Todo Pages: Numbered items with detail page links
- Detail Pages: Dot grid pages for extended notes (2 pages per todo by default)
- Clone the repository
git clone https://github.com/yourusername/pdf-todo-generator.git
cd pdf-todo-generator- Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies
pip install -r requirements.txt- Run the application
streamlit run pdf_generator_ui.py- Open in browser
Navigate to
http://localhost:8501
docker build -t pdf-generator .
docker run -p 8501:8501 -v $(pwd)/saved_configs:/app/saved_configs -v $(pwd)/generated_pdfs:/app/generated_pdfs pdf-generator-
Select Page Format
- Choose from preset formats (A4, A5, etc.)
- Or select "Custom" for specific dimensions
-
Configure Layout
- Set margins (or use auto-scaling)
- Adjust dot grid density
- Choose number of todo items per column
-
Customize Appearance
- Font sizes for headers, icons, numbers
- Colors for lines and text
- Todo number placement
-
Generate PDF
- Click "Update Preview" to see changes
- Click "Generate PDF" to create final document
- Download the generated file
For e-readers like Boox Note Air 3:
- Select "Custom" page format
- Choose "Pixels + PPI" input method
- Enter your device specs:
- Width: 1872 pixels
- Height: 1404 pixels
- PPI: 227
- Enable auto-scaling for optimal layout
| Device | Resolution | PPI | Screen Size |
|---|---|---|---|
| Boox Note Air 3 | 1872Γ1404 | 227 | 10.3" |
| Boox Note Max | 3200Γ2400 | 300 | 13.3" |
| reMarkable 2 | 1872Γ1404 | 226 | 10.3" |
| Kindle Scribe | 1860Γ2480 | 300 | 10.2" |
| iPad Pro 11" | 2388Γ1668 | 264 | 11" |
- Page Format: Preset or custom dimensions
- Margins: Auto-scaling or manual (2-40mm)
- Orientation: Portrait (default)
- Spacing: 3-15mm between dots
- Radius: 0.1-1.0mm dot size
- Color: Grayscale intensity (0.3-0.9)
- Auto-scaling: Adapts to page size
- Items per Column: 10-30 items
- Columns: 1 or 2 columns
- Todo Pages: 10-100 pages
- Detail Pages: 1-5 pages per todo
- Header Size: 10-20pt
- Icon Size: 10-18pt (for ">" symbol)
- Detail Size: 10-16pt
- Number Size: 5-10pt
- Placement Options:
- Outside (left/right margins)
- Inside (left of line)
- Inside (right of line)
- Hidden
- Position Offset: Fine-tune X/Y position
- Standard (72 DPI): Screen viewing
- High (150 DPI): Good quality
- Print (300 DPI): E-readers
- Maximum (600 DPI): Professional printing
- Configure all settings as desired
- Enter a name for your configuration
- Click "Save Configuration"
- Configuration is stored in
saved_configs/directory
- Select from dropdown of saved configurations
- Click "Load Configuration"
- All settings are restored instantly
The app intelligently scales the following based on page size:
- Margins (proportional to page dimensions)
- Dot spacing (maintains visual density)
- Items per column (based on available height)
- Detail page header position
- Uses ReportLab's Form XObject for dot patterns
- Reuses dot grid across all detail pages
- Generates compact PDFs even with thousands of pages
pdf-todo-generator/
βββ pdf_generator_ui.py # Main Streamlit interface
βββ generator-pdf-todo-boox-double-details_16.py # Core PDF generator
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ LICENSE # MIT License
βββ saved_configs/ # Stored configurations (JSON)
β βββ .gitkeep
βββ generated_pdfs/ # Output directory
βββ .gitkeep
- Python 3.9+
- Streamlit 1.29.0
- ReportLab 4.0.7
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with Streamlit for the web interface
- PDF generation powered by ReportLab
- Optimized for Boox e-readers and similar devices
For questions or suggestions, please open an issue on GitHub.
Made with β€οΈ for productivity enthusiasts and e-reader users