A Python-based tool that generates professional academic schedules in PDF format from JSON data. The generated PDF includes interactive checkboxes for tracking task completion, mini calendars with highlighted event days, and a clean table layout showing dates, times, events, and room assignments. Event types and course names are clearly formatted with course codes for easy reference.
- Automated PDF Generation: Converts JSON schedule data into formatted LaTeX and PDF documents
- Interactive Checkboxes: Click-to-check boxes for tracking completed tasks (checkmark for done, cross for not done)
- Visual Calendar: Mini calendars highlighting days with scheduled events
- Professional Formatting: Clean, landscape-oriented layout optimized for printing
- Course Information: Displays course codes, names, and room assignments
- Flexible Event Types: Supports exams, homework, labs, and custom event types
- Python 3.x
- LaTeX distribution (TeX Live, MiKTeX, or similar)
- pdflatex command-line tool
- hyperref
- pifont
- tikz (with calendar and shapes.geometric libraries)
- longtable
- array
- booktabs
- geometry
- Ensure Python 3.x is installed on your system
- Install a LaTeX distribution if not already present
- Clone or download this repository
- No additional Python dependencies are required (uses standard library only)
Run the script with default settings:
python3 generate_schedule.pyThe script will:
- Read
schedule_data.json - Generate
Academic Schedule.tex - Compile the PDF automatically
- Create
Academic Schedule.pdf
Specify custom input and output files:
python3 generate_schedule.py <input_json> <output_tex>Example:
python3 generate_schedule.py my_schedule.json my_schedule.tex{
"schedule_info": {
"title": "Academic Schedule",
"period": "November 2025 -- January 2026",
"start_date": "2025-11-01",
"end_date": "2026-01-31"
}
}{
"subjects": {
"subject_key": {
"name": "Subject Name",
"code": "COURSE_CODE",
"default_room": "Room Number"
}
}
}{
"events": [
{
"date": "2025-11-15",
"time": "14:00",
"subject": "subject_key",
"type": "Midterm",
"room": "Room 101",
"section": "Exam Period"
}
]
}Event Fields:
date: ISO format (YYYY-MM-DD) or "TBA" for to-be-announcedtime: 24-hour format (HH:MM) or empty stringsubject: Reference to subject keytype: Event description (e.g., "Midterm", "Homework Submission")room: Optional, overrides default roomsection: Optional, use "Exam Period" for special section
The generated PDF includes:
- Title Section: Schedule title and time period
- Calendar View: Monthly calendars with highlighted event days
- Event Tables: Organized by month with columns for Date, Time, Event (type and course), Room, and Done (interactive checkboxes)
- Exam Period Section: Separate section for exam-related events
PDF form features (interactive checkboxes) work best in Adobe Acrobat Reader or PDF Expert. macOS Preview has limited support for custom checkbox symbols. For best results, use a full-featured PDF viewer. The LaTeX compilation may take a few seconds depending on document size.
Contributions are welcome! Feel free to:
- Report bugs
- Suggest new features
- Submit pull requests
- Improve documentation
This project is licensed under the MIT License - see the LICENSE file for details.
Current version: 1.0.0
Built with Python and LaTeX for academic productivity.
