# Plan: Issue #46 — ReportService + PDF generation

## Summary
Server-side report generation with PDF output using TCPDF. ReportService provides structured data for 8 report types, PdfService renders HTML tables to PDF with configurable header, ReportController exposes preview/PDF/encrypted endpoints.

## Implementation
1. `composer.json` — add `tecnickcom/tcpdf` dependency
2. `lib/Service/ReportService.php` — data generation for all report types
3. `lib/Service/PdfService.php` — TCPDF wrapper with HTML table rendering
4. `lib/Controller/ReportController.php` — REST endpoints (preview, PDF, encrypted)
5. `appinfo/routes.php` — new report routes

## Report Types
- Mitgliederliste (optionally filtered by status)
- Beitragsliste (by year)
- Stufenliste (grouped by Stufe)
- Allergieliste (members with allergies/KV)
- Geburtstagsliste (upcoming N months)
- Kontaktliste (optionally filtered by Stufe)
- Bankverbindungen (restricted, requires canSeeBanking)
- Familienliste (families with members)

## Acceptance Criteria
1. [x] ReportService with methods for each report type
2. [x] PDF generation using TCPDF
3. [x] Configurable header (Verein name from app settings)
4. [x] Consistent styling across all reports
5. [x] Each method returns structured data for both preview and PDF
6. [x] Banking report requires canSeeBanking permission
7. [x] Preview endpoint returns JSON for frontend table display
8. [x] Encrypted PDF option via password-protected ZIP
