Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/a-schild/pdfcalendarbuilder
PHP library to generate pdf with monthly calendars and autosizing
https://github.com/a-schild/pdfcalendarbuilder
calendar churchtools library month pdf php php81
Last synced: 4 days ago
JSON representation
PHP library to generate pdf with monthly calendars and autosizing
- Host: GitHub
- URL: https://github.com/a-schild/pdfcalendarbuilder
- Owner: a-schild
- License: apache-2.0
- Created: 2019-03-27T22:19:50.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-06-12T15:50:54.000Z (over 1 year ago)
- Last Synced: 2024-12-21T02:02:30.906Z (13 days ago)
- Topics: calendar, churchtools, library, month, pdf, php, php81
- Language: PHP
- Homepage:
- Size: 291 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PDFCalendarBuilder
Generate pdf month calendars with autoscaling/sizingWith the addMonth() introduced in 1.0.8 you can generate a PDF containing
multiple months. Each month will be on it's own page then.## Unique features
- The class can try to put everything on one page
- In an normal calendar, all rows have the same height
- This library can shrink/expand rows, so everything fits on one page.
See setResizeRowHeightsIfNeeded(true/false);- If this is not enough, it can reduce the font size until everything fits on one page.
See setShrinkFontSizeIfNeeded(true/false);## Usage:
In your composer.json add the dependency:```
"require": {
"php": "^8.1",
"a-schild/pdfcalendarbuilder": ">=1.0.11",
}
```
### Creating the class and generate calendar
```
$cal = new aschild\PDFCalendarBuilder\CalendarBuilder(1, 2019, "Calendar title", true, 'mm', 'A4');
$cal->startPDF();
$cal->addEntry($startDate, $endDate, "Entry 1", "#000000", "#fffff");
$cal->buildCalendar();
$cal->Output("calendar.pdf", "I");
```### Creating the class and generate calendar for 3 months (Required version 1.0.7 or higher)
```
$cal = new aschild\PDFCalendarBuilder\CalendarBuilder(1, 2019, "Calendar title Jan", true, 'mm', 'A4');
$cal->startPDF();
$cal->addEntry($startDate1, $endDate1, "Entry 1", "#000000", "#ffffff");
$cal->buildCalendar();
$cal->addMonth(2, 2019, "Title for Feb");
$cal->addEntry($startDate2, $endDate2, "Entry 1", "#000000", "#ffffff");
$cal->buildCalendar();
$cal->addMonth(3, 2019, "Title for March");
$cal->addEntry($startDate3, $endDate3, "Entry 1", "#000000", "#ffffff");
$cal->buildCalendar();
$cal->Output("calendar.pdf", "I");
```## Examples
- Empty calendar, no entries, just a month grid
![Empty calendar ](doc/img/calendar-empty.png)
- Overflowing boxes in normal libraries
![Box overflow in normal calendars](doc/img/calendar-overflow.png)
- Resize row heights to adapt space usage
![Resize rows height](doc/img/calendar-resize-row2.png)
- Resize row heights and shrink font size if needed
![Resize rows and shrink font](doc/img/calendar-resize-rows-shrink-fontsize.png)
- Day spanning events
![Events which span days](doc/img/calendar-day-spanning.png)(C) 2019 A.Schild