Eine APK-Datei ist das Installationspaket einer Android-App – also das Android-Pendant zu einer .exe unter Windows. Sie enthält die App selbst plus alles, was Android zum Installieren brauc...
Wie erstelle ich mit PHP 8.2 eine PDF/A-3-Datei?
Antwort vom**Mit PHP 8.2 erstellst du eine PDF/A-3-Datei am praktikabelsten mit TCPDF; mPDF kann zwar PDF/A, ist dafür aber deutlich weniger klar dokumentiert und selbst die eigene Doku bezeichnet die Bibliothek insgesamt als veraltet. Für echte PDF/A-3-Anforderungen ist entscheidend: eingebettete Schriften, korrektes XMP/ICC-Profil und keine verbotenen PDF-Features.** ([tcpdf.org](https://tcpdf.org/)) ## Die kurze Antwort TCPDF unterstützt PDF/A 1/2/3 inklusive der Konformitätsstufen a/b/u direkt. Auf der Projektseite wird PDF/A-3 ausdrücklich genannt, und es gibt sogar ein Beispiel für PDF/A-3b. ([tcpdf.org](https://tcpdf.org/)) Wenn du nur „eine archivfähige PDF/A-3-Datei“ brauchst, ist **PDF/A-3b** meist die richtige Wahl. Wenn du zusätzlich maschinenlesbare Rechnungsdaten einbetten willst, ist PDF/A-3 auch die Basis für Factur-X/ZUGFeRD-Workflows. ([tcpdf.org](https://tcpdf.org/)) ## Warum viele Beispiele im Netz unvollständig sind Der typische Fehler ist: Es wird einfach „eine PDF erzeugt“ und dann behauptet, sie sei PDF/A-3. Das reicht nicht. Für PDF/A-3 müssen unter anderem diese Punkte stimmen: - Schriften müssen eingebettet sein. - Ein Output Intent mit ICC-Farbprofil muss vorhanden sein. - Metadaten müssen sauber gesetzt sein. - Verschlüsselung und andere unzulässige Features sind tabu. ([tcpdf.org](https://tcpdf.org/)) Genau daran scheitern viele kurze Blog-Beispiele. ## Empfohlener Weg mit TCPDF Installation per Composer: ```bash composer require tecnickcom/tcpdf ``` Ein minimales Beispiel für **PDF/A-3b** in PHP 8.2 sieht so aus: ```php <?php require __DIR__ . '/vendor/autoload.php'; use Com\Tecnick\Pdf\Tcpdf; $pdf = new Tcpdf( 'P', // orientation 'mm', // unit 'A4', // format true, // unicode 'UTF-8', false, false, 'PDF/A-3B' // entscheidend: PDF/A-3b-Modus ); $pdf->setCreator('Meine Anwendung'); $pdf->setAuthor('Max Mustermann'); $pdf->setTitle('Beispiel PDF/A-3'); $pdf->setSubject('Archivdokument'); $pdf->setKeywords('PDF/A-3, PHP 8.2, TCPDF'); $pdf->setPrintHeader(false); $pdf->setPrintFooter(false); $pdf->SetMargins(20, 20, 20); $pdf->AddPage(); $pdf->SetFont('helvetica', '', 12); $pdf->Write(0, 'Dies ist ein PDF/A-3b-Dokument.'); $pdf->Output(__DIR__ . '/beispiel-pdfa3.pdf', 'F'); ``` Die entscheidende Stelle ist der Modus beim Erzeugen des Dokuments. TCPDF dokumentiert PDF/A-Unterstützung direkt, und das offizielle Beispiel 065 zeigt PDF/A-3b ausdrücklich. ([tcpdf.org](https://tcpdf.org/)) ## Was du in der Praxis zusätzlich beachten musst Der obige Code ist der Einstieg, aber für **valide** PDF/A-3-Dateien ist das hier entscheidend: ### 1. Eigene Schrift einbetten statt auf Zufall zu hoffen Für saubere Archivierung solltest du eine vollständig eingebettete Unicode-Schrift verwenden. Standardfonts sind in PDF/A-Kontexten oft die Stelle, an der Validatoren meckern. mPDF weist selbst darauf hin, dass PDF-Dateien nicht von externen Font-Ressourcen abhängen dürfen; das gilt praktisch genauso als Denkregel für PDF/A-Workflows allgemein. ([mpdf.github.io](https://mpdf.github.io/what-else-can-i-do/pdf-a1-b-compliance.html)) ### 2. PDF/A-3 ist nicht automatisch „inhaltlich korrekt“ PDF/A-3 erlaubt eingebettete Dateien. Das heißt aber nicht, dass jede eingebettete XML oder beliebige Anlage automatisch fachlich korrekt ist. Für **ZUGFeRD/Factur-X** brauchst du zusätzlich die richtige XML-Struktur und passende Metadaten. TCPDF nennt diese Workflows ausdrücklich als PDF/A-3-Anwendungsfall. ([tcpdf.org](https://tcpdf.org/)) ### 3. Immer validieren Erzeuge die Datei nicht nur, sondern prüfe sie mit einem PDF/A-Validator. Sonst merkst du Fehler oft erst beim Archivsystem oder beim Rechnungsempfänger. Der praktische Unterschied ist wichtig: **„PDF mit Anhang“** ist leicht. **„Valides PDF/A-3“** ist der eigentliche Aufwand. ## Wann mPDF sinnvoll ist – und wann nicht mPDF nennt PDF/A-3-Unterstützung ebenfalls in der Doku, inklusive Variablen für PDF/A-Versionen. Gleichzeitig weist die eigene Startseite darauf hin, dass mPDF insgesamt eine eher alte Software ist und heute oft bessere Alternativen existieren. Für HTML-zu-PDF kann mPDF bequem sein, für robuste PDF/A-3-Workflows würde ich trotzdem TCPDF bevorzugen. ([mpdf.github.io](https://mpdf.github.io/about-mpdf/features.html)) ## Klare Empfehlung **Wenn du mit PHP 8.2 eine echte PDF/A-3-Datei erzeugen willst, nimm TCPDF und ziele standardmäßig auf PDF/A-3b.** Das ist der sauberste Weg, weil PDF/A-3 dort offiziell unterstützt und als konkreter Workflow dokumentiert ist. ([tcpdf.org](https://tcpdf.org/)) Wenn du später ZUGFeRD oder Factur-X brauchst, ist das derselbe sinnvolle Unterbau. ([tcpdf.org](https://tcpdf.org/))