PDF: Unicode-Schriften und temporaere Dateien 20 Minuten statt Sekunden
- makepdf.php nutzt FreeSerif/FreeSans (bei TCPDF dabei) statt der eingebauten PDF-Schriften Times/Helvetica. Die kennen nur westeuropaeische Zeichen, Namen wie Dvorak mit Hacek oder Lukasz mit L-Strich wurden zu "?". Die Breiten weichen um hoechstens 0,8 % (Serif) bzw. 3 % (Sans) ab. Die Schriften stehen als Konstanten PDF_SCHRIFT_SERIF/-_SANS an einer Stelle. Die PDFs werden durch die eingebetteten Zeichen etwa 130 KB groesser. - savePDF() und makeImageFromPDF() raeumten Dateien auf, die aelter als 20 Sekunden waren; laut Kommentar waren Minuten gemeint. Oeffneten zwei Personen kurz nacheinander Dokumente, konnte das PDF der ersten weg sein, bevor ihr Browser es geladen hatte. Jetzt PDF_TEMP_MAX_ALTER = 20 Minuten. Getestet: Rechnungs-PDF fuer alle drei Briefkoepfe mit Namen/Firma in tschechischen und polnischen Zeichen, im Browser gerendert; Aufraeumen mit 5, 19 und 25 Minuten alten Dateien. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -106,6 +106,7 @@ SQL wird durchgehend per String-Verkettung gebaut. Escaping ist Handarbeit über
|
||||
|
||||
- **`smarty/` enthält Smarty 4.5.6** — der schlichte Verzeichnisname sagt nichts über die Version.
|
||||
- **PHPMailer liegt in zwei Versionen parallel und beide sind aktiv:** `index.php` lädt `incs/PHPMailer_v6` für den Rechnungsversand, `sites/projectadd.php` dagegen `incs/PHPMailer_v5.1`. Keine der beiden ist entfernbar, ohne den jeweiligen Aufrufer umzustellen.
|
||||
- **PDF-Schriften nur über `PDF_SCHRIFT_SERIF` / `PDF_SCHRIFT_SANS`** (oben in `incs/makepdf.php`, FreeSerif/FreeSans). Die eingebauten PDF-Schriften Times/Helvetica können nur westeuropäische Zeichen; aus ř, ł, č würde ein „?“.
|
||||
- **`incs/font/` gehört zu pChart, nicht zu TCPDF.** Die TTFs dort werden von `stats.php` für die Diagramme geladen; TCPDF bringt seine Schriften in `incs/tcpdf/fonts/` selbst mit.
|
||||
- **`index.php` setzt `error_reporting(E_ERROR | E_PARSE)`.** Warnungen und Notices sind unterdrückt, und der Code verlässt sich darauf — nicht ohne Not hochdrehen, sonst überflutet es die Ausgabe.
|
||||
- **`templates_c/`, `ajax/templates_c/` und `temp/` müssen für den Webserver schreibbar sein.** Sie sind git-ignoriert und nur über `.gitkeep` im Repo vorhanden.
|
||||
|
||||
Reference in New Issue
Block a user