Dateien, die als Attachments in PDF-Dokumenten enthalten sind, spielen in nachverarbeitenden Prozessen meist eine wichtige Rolle. Deshalb stellt PDFUnit Tests für Attachments (eingebettete Dateien) bereit:
<!-- Tags to test embedded files: --> <hasNumberOfEmbeddedFiles /> <hasEmbeddedFile name=".." (one of the two content=".." attributes is required) /> <hasEmbeddedFileContent />
Die folgenden Tests beziehen sich auf das PDF-Formular für die deutsche Umsatzsteuervoranmeldung 2010, „umsatzsteuervoranmeldung-2010.pdf“. Es enthält eine Datei mit dem Namen „PrePress-Qualität.joboptions“.
Der einfachste Test ist, zu prüfen, ob es überhaupt eingebettete Dateien gibt:
<testcase name="hasEmbeddedFile"> <assertThat testDocument="embeddedfiles/umsatzsteuervoranmeldung-2010.pdf"> <hasEmbeddedFile /> </assertThat> </testcase>
Etwas weiter zielt die Prüfung der Anzahl der eingebetteten Dateien:
<testcase name="hasNumberOfEmbeddedFiles"> <assertThat testDocument="embeddedfiles/umsatzsteuervoranmeldung-2010.pdf"> <hasNumberOfEmbeddedFiles>1</hasNumberOfEmbeddedFiles> </assertThat> </testcase>
Danach kommen die Namen der Dateien:
<testcase name="hasEmbeddedFile_WithName"> <assertThat testDocument="embeddedfiles/umsatzsteuervoranmeldung-2010.pdf"> <hasEmbeddedFile name="PrePress-Qualität.joboptions" /> </assertThat> </testcase>
Und schließlich kann der Inhalt der in PDF eingebetteten Datei mit einer externen Datei verglichen werden.
<testcase name="hasEmbeddedFile_WithContent"> <assertThat testDocument="embeddedfiles/umsatzsteuervoranmeldung-2010.pdf"> <hasEmbeddedFile content="embeddedfiles/PrePress-Qualität.joboptions" /> </assertThat> </testcase>
Der Vergleich erfolgt byte-weise.
Wenn die eingebetteten Dateien nicht als separate Datei vorliegen, können sie mit dem Hilfsprogramm „ExtractEmbeddedFiles“ aus einem bestehenden PDF-Dokument (Master-PDF) extrahiert werden. Das Programm wird in Kapitel 9.2: „Anhänge extrahieren“ genauer beschrieben.
Ein Test kann auch gleichzeitig mehrere Dateinamen überprüfen:
<testcase name="hasEmbeddedFile_MultipleInvocation"> <assertThat testDocument="embeddedfiles/kubrick_dvds.pdf"> <hasEmbeddedFile name="0048254.jpg" /> <hasEmbeddedFile name="0049406.jpg" /> <hasEmbeddedFile name="0050825.jpg" /> </assertThat> </testcase>
Das vorhergende Beispiel bezieht sich auf die Datei „kubrick_dvds.pdf“, eine Beispieldatei von iText. Der Adobe Reader® zeigt die eingebetteten Dateien an: