- Renderer auf FPDI (setasign/fpdi) umgestellt: Kunden-PDF wird als
Seitenhintergrund importiert, nur dynamische Felder werden überlagert
(Variable Data Printing); bei Hintergrund keine eigenen Schnittmarken
- Eigene Schriften (TTF/OTF) per TCPDF_FONTS::addTTFfont eingebettet,
fontFamily pro Element; DejaVu-TTF im PHP-Image
- CardTemplate: backgroundPath + fonts; Renderer color() unterstützt {hex}
- CardAssetUploadController: Upload/Delete Hintergrund-PDF + Schrift-Upload,
Speicher in var/storage/cards/{companyId} (außerhalb Webroot)
- Editor-GET liefert hasBackground + fonts
- Migration robust gegen MariaDB json_valid-CHECK (nullable -> '[]' -> NOT NULL)
- Konzept §13 ergänzt
Verifiziert: Kunden-Hintergrund + dynamische Felder + eingebettete Serifenschrift
+ QR; /FontFile im PDF.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
27 lines
1.1 KiB
Docker
27 lines
1.1 KiB
Docker
FROM php:8.4-fpm-bookworm
|
|
|
|
# System-Abhängigkeiten für die PHP-Extensions
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
git unzip libicu-dev libzip-dev libpng-dev libjpeg-dev libfreetype6-dev \
|
|
fonts-dejavu-core \
|
|
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
|
&& docker-php-ext-install -j"$(nproc)" intl pdo_mysql zip gd opcache \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Composer aus dem offiziellen Image übernehmen
|
|
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
|
|
|
# Symfony CLI (praktisch für Maker/Server/Checks)
|
|
RUN curl -1sLf 'https://dl.cloudsmith.io/public/symfony/stable/setup.deb.sh' | bash \
|
|
&& apt-get update && apt-get install -y --no-install-recommends symfony-cli \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
|
|
|
# Nicht-root-User passend zur Host-UID (vermeidet Datei-Rechte-Probleme)
|
|
ARG UID=1000
|
|
ARG GID=1000
|
|
RUN groupmod -g "${GID}" www-data 2>/dev/null || true \
|
|
&& usermod -u "${UID}" -g "${GID}" www-data 2>/dev/null || true
|
|
|
|
WORKDIR /app
|
|
USER www-data
|