Wie fügt man mit SetaPDF und PHP 8 einer bestehenden PDF-Datei ein Attachment hinzu?

Antwort vom

Mit SetaPDF machst du das über **SetaPDF-Core**: bestehende PDF laden, eine `EmbeddedFileStream` erzeugen, daraus eine `FileSpecification` bauen und diese im globalen `EmbeddedFiles`-Namensbaum registrieren. Genau dafür gibt es im Core-Manual ein Beispiel „Add Attachments / Embedded Files“. ([manuals.setasign.com](https://manuals.setasign.com/setapdf-core-manual/embedded-file-streams/?utm_source=openai)) Beispiel für **PHP 8**: ```php <?php require_once 'vendor/autoload.php'; use setasign\SetaPDF2\Core\Document; use setasign\SetaPDF2\Core\Writer\FileWriter; use setasign\SetaPDF2\Core\EmbeddedFileStream; use setasign\SetaPDF2\Core\FileSpecification; // Bestehende PDF laden und neue Datei schreiben $writer = new FileWriter(__DIR__ . '/output.pdf'); $document = Document::loadByFilename(__DIR__ . '/input.pdf', $writer); // Datei einbetten $fileData = file_get_contents(__DIR__ . '/rechnung.xml'); $embeddedFile = new EmbeddedFileStream($document, $fileData); $embeddedFile->setMimeType('application/xml'); // FileSpecification erzeugen $fileSpec = FileSpecification::createEmbedded( $document, $embeddedFile, 'rechnung.xml', 'rechnung.xml', 'Angehängte XML-Datei' ); // Im globalen Attachment-Bereich registrieren $embeddedFiles = $document->getCatalog()->getNames()->getEmbeddedFiles(); $embeddedFiles->add('rechnung.xml', $fileSpec); // PDF speichern $document->save()->finish(); ``` Wichtig: - **Attachment in der PDF-Anlagenliste**: über `getCatalog()->getNames()->getEmbeddedFiles()->add(...)`. ([manuals.setasign.com](https://manuals.setasign.com/setapdf-core-manual/embedded-file-streams/?utm_source=openai)) - **Klickbares Büroklammer-Symbol auf einer Seite**: zusätzlich eine `FileAttachmentAnnotation` anlegen. Dafür gibt es eine eigene Klasse im Core-Manual. ([manuals.setasign.com](https://manuals.setasign.com/setapdf-core-manual/annotations/file-attachment-annotation/?utm_source=openai)) - **SetaPDF-Stamper** ist für sichtbare Inhalte auf bestehenden PDFs gedacht; Attachments selbst gehören funktional in **SetaPDF-Core**. ([manuals.setasign.com](https://manuals.setasign.com/setapdf-stamper-manual/?utm_source=openai)) - SetaPDF ist aktuell mit modernen PHP-8-Versionen kompatibel; die aktuellen Releases nennen Unterstützung bis PHP 8.5. ([setasign.com](https://www.setasign.com/news-archive/setapdf-2.46.1.2039-released/?utm_source=openai)) Offizielle Doku: https://manuals.setasign.com/setapdf-core-manual/embedded-file-streams/ ([manuals.setasign.com](https://manuals.setasign.com/setapdf-core-manual/embedded-file-streams/?utm_source=openai)) Annotation-Doku: https://manuals.setasign.com/setapdf-core-manual/annotations/file-attachment-annotation/ ([manuals.setasign.com](https://manuals.setasign.com/setapdf-core-manual/annotations/file-attachment-annotation/?utm_source=openai)) Allgemeine SetaPDF-Manuals: https://manuals.setasign.com/ ([manuals.setasign.com](https://manuals.setasign.com/?utm_source=openai))

Neue Frage stellen