3.3. Anhänge (Attachments)

Überblick

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 />

Existenz

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>

Anzahl

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>

Dateiname

Danach kommen die Namen der Dateien:

<testcase name="hasEmbeddedFile_WithName">
  <assertThat testDocument="embeddedfiles/umsatzsteuervoranmeldung-2010.pdf">
    <hasEmbeddedFile name="PrePress-Qualität.joboptions" />
  </assertThat>
</testcase>

Inhalt

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: