Skip to main content

Centralized PDF export styling for KAAG projects

Project description

KAAG PDF Exports

Een gecentraliseerde Python package voor het genereren van gestileerde PDF exports voor alle KAAG projecten met consistente branding.

Features

  • 🎨 Unified Color Schemes - KAA Gent branding kleuren
  • 🔤 Custom Font Support - Poppins, Obviously, IvyPresto
  • 📊 Herbruikbare Componenten - Headers, tabellen, radar charts, performance bars
  • 📄 Meerdere Report Types - Scouting reports, final reports, quick overviews

Installatie

Lokale Development

# Vanuit de kaag-pdf-exports directory
pip install -e .

Als Dependency in KAAG-BE

# In KAAG-BE requirements.txt toevoegen:
-e ../kaag-pdf-exports
# Of direct installeren:
pip install -e ../kaag-pdf-exports

Gebruik

Basic Usage

from kaag_pdf import PDFGenerator, KAAG_COLORS

# Maak een generator
generator = PDFGenerator()

# Genereer een PDF
pdf_bytes = generator.create_report(
    title="Speler Rapport",
    subtitle="Seizoen 2024-2025",
    content_callback=my_content_function,
)

# Opslaan
with open("rapport.pdf", "wb") as f:
    f.write(pdf_bytes)

Color Scheme

from kaag_pdf import ColorScheme, KAAG_COLORS, KAAG_COLORS_LIGHT

# Gebruik standaard kleuren
print(KAAG_COLORS.primary)  # (0, 57, 107) - KAA Gent blauw

# Genormaliseerd voor ReportLab (0-1 range)
r, g, b = KAAG_COLORS.primary_normalized()

# Custom color scheme
custom = ColorScheme(
    primary=(100, 50, 200),
    secondary=(200, 150, 100),
    # ... other colors
)

Fonts

from kaag_pdf import FontManager, FONTS, get_font

# Automatische font registratie
font_manager = FontManager()
font_manager.register_fonts()

# Get font name met fallback
heading_font = get_font("HEADING", fallback="Helvetica-Bold")

# Beschikbare font keys:
# POPPINS_REGULAR, POPPINS_BOLD, POPPINS_SEMIBOLD, etc.
# OBVIOUSLY_REGULAR, OBVIOUSLY_BOLD, OBVIOUSLY_SEMIBOLD
# IVYPRESTO_REGULAR, IVYPRESTO_ITALIC
# HEADING, SUBHEADING, BODY, BODY_BOLD, ACCENT, LABEL, SMALL

Components

from kaag_pdf.components import (
    PDFHeader,
    PDFFooter,
    InfoBlock,
    SectionHeader,
    StatsTable,
    RadarChart,
    PerformanceBar,
    RadarChartData,
    PerformanceBarData,
)

# Radar Chart
radar_data = RadarChartData(
    labels=["Aanval", "Verdediging", "Passing", "Fysiek", "Mentaal"],
    values=[75, 60, 80, 70, 85],
    background_values=[50, 50, 50, 50, 50],  # Group average
    title="Performance",
)

chart = RadarChart()
chart.draw(canvas, center_x, center_y, radar_data)

# Performance Bar
bar_data = PerformanceBarData(
    label="Doelpunten per 90",
    value=0.45,
    percentile=15.0,  # Top 15%
)

bar = PerformanceBar()
bar.draw(canvas, x, y, bar_data)

Styles

from kaag_pdf import PDFStyles
from kaag_pdf.styles import DEFAULT_STYLES, COMPACT_STYLES

# Custom styles
my_styles = PDFStyles(
    page_margin_top=20 * mm,
    font_size_title=28,
    radar_chart_size=70 * mm,
)

generator = PDFGenerator(styles=my_styles)

Fonts Installeren

Kopieer font bestanden naar src/kaag_pdf/assets/fonts/:

  • Poppins-Regular.ttf
  • Poppins-Bold.ttf
  • Poppins-SemiBold.ttf
  • Poppins-Light.ttf
  • Poppins-Medium.ttf
  • Obviously-Regular.ttf
  • Obviously-Bold.ttf
  • Obviously-SemiBold.ttf
  • IvyPrestoDisplay-Regular.otf
  • IvyPrestoDisplay-Italic.otf

Project Structure

kaag-pdf-exports/
├── setup.py
├── README.md
└── src/
    └── kaag_pdf/
        ├── __init__.py
        ├── colors.py          # Color schemes
        ├── fonts.py           # Font management
        ├── styles.py          # PDF styling
        ├── components.py      # Reusable components
        ├── generator.py       # Base PDF generator
        └── assets/
            ├── fonts/         # TTF/OTF files
            └── images/        # Logos, etc.

API Reference

PDFGenerator

De basis class voor PDF generatie met ingebouwde componenten.

Method Description
create_report(title, subtitle, content_callback, data) Genereer complete PDF
new_page(canvas, title, subtitle) Start nieuwe pagina
check_page_break(canvas, current_y, needed_height, ...) Check of page break nodig is
draw_section(canvas, y, title) Teken section header
draw_info_block(canvas, y, items, title) Teken info block
draw_radar_chart(canvas, x, y, data) Teken radar chart
draw_performance_bar(canvas, y, data) Teken performance bar

ColorScheme

Color Usage
primary Headers, accenten
secondary Secundaire accenten (goud)
text_primary Hoofdtekst
text_secondary Muted tekst
success/warning/danger Status kleuren
chart_primary/secondary/background Chart kleuren

Licentie

Intern gebruik - KAA Gent

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaag_pdf_exports-0.2.6.tar.gz (239.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kaag_pdf_exports-0.2.6-py3-none-any.whl (240.4 kB view details)

Uploaded Python 3

File details

Details for the file kaag_pdf_exports-0.2.6.tar.gz.

File metadata

  • Download URL: kaag_pdf_exports-0.2.6.tar.gz
  • Upload date:
  • Size: 239.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.0

File hashes

Hashes for kaag_pdf_exports-0.2.6.tar.gz
Algorithm Hash digest
SHA256 383ae25994ca1bb144ca636dbfa2a4191214464207d3f3d5e9c75887629d0c6d
MD5 3ae5376cdec99b3f529a5067f84358ed
BLAKE2b-256 1f7ec35860349effec8f38049b34d114811ba05cba73da2682d47ee5403c7567

See more details on using hashes here.

File details

Details for the file kaag_pdf_exports-0.2.6-py3-none-any.whl.

File metadata

File hashes

Hashes for kaag_pdf_exports-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 4775e4add51420c347e3feff76c8548534ace48e1db98937ffb9d93d8323a8c0
MD5 8f34bfa98463366d0c84f41141f417c2
BLAKE2b-256 705935dccdfec03358731aaa4d709c9a01eec75fc7d0e808c0ecca570b509fbe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page