Warum auch immer Sie das Erstellungsdatum eines Dokumentes überprüfen wollen - wegen der verschiedenen Formate, die ein Datum haben kann, ist es nicht ganz einfach. PDFUnit versucht, diese Komplexität zu kapseln, und gleichzeitig recht vielfältige Testsszenarien anzubieten.
Die folgenden Abschnitte zeigen lediglich Tests für das Erstellungsdatum. Tests für das Änderungsdatum funktionieren exakt gleich:
<!-- Tags to test date values: --> <hasCreationDate /> <hasCreationDateAfter /> <hasCreationDateBefore /> <hasModificationDate /> <hasModificationDateAfter /> <hasModificationDateBefore /> <hasNoCreationDate /> <hasNoModificationDate />
Am Anfang soll getestet werden, ob ein PDF-Dokument überhaupt ein Erstellungsdatum enthält:
<testcase name="hasCreationDate"> <assertThat testDocument="documentInfo/documentInfo_allInfo.pdf"> <hasCreationDate /> </assertThat> </testcase>
Wenn Ihr Dokument bewusst kein Erstellungsdatum enthalten soll, können Sie das auch testen:
<testcase name="hasCreationDate_NoDateInPDF"> <assertThat testDocument="documentInfo/documentInfo_noDateFields.pdf"> <hasNoCreationDate /> </assertThat> </testcase>
Im nächsten Abschnitt wird ein vorhandenes Datum gegen einen Erwartungswert getestet.
          Sie müssen festlegen, welche Datumsbestandteile für den Test relevant sind.
          Dafür bietet das Attribut resolution die zwei Konstanten
          resolution="DATE" und resolution="DATETIME"
          an. Mit der Konstanten DATE werden Tag, Monat und Jahr 
          verglichen und mit der Konstanten DATETIME 
          zusätzlich noch Stunde, Minute und Sekunde.
        
Tests sehen dann so aus:
<testcase name="hasCreationDate_DateResolution"> <assertThat testDocument="documentInfo/documentInfo_allInfo.pdf"> <hasCreationDate withDate="2013-05-05" resolution="DATE" /> </assertThat> </testcase>
<testcase name="hasCreationDate_DateTimeResolution"> <assertThat testDocument="documentInfo/documentInfo_allInfo.pdf"> <hasCreationDate withDate="2013-05-05T09:33:47" resolution="DATETIME" /> </assertThat> </testcase>
          Das Format des erwarteten Datums ist durch die XML Schema Definition festgelegt (xs:date).
          Da aber das PDF-interne Datum unterschiedlich formatiert sein kann, muss 
          dessen Format-String durch einen Eintrag in der Konfigurationsdatei „config.properties“
          definiert werden.
        
          Wenn Sie das Attribut resolution=".." weglassen, wird resolution="DATE"
          angenommen.
        
          Das Datumsformat innerhalb von PDF-Dokumenten variiert stark, abhängig vom jeweiligen 
          PDF-Erstellungswerkzeug. Wenn Sie innerhalb eines Projektes nur ein Werkzeug zur 
          PDF-Erstellung nutzen, sehen Sie diese Varianz nicht. Da PDFUnit das Datumsformat 
          Ihres Werkzeuges aber nicht vorausahnen kann, müssen Sie es in der Datei 
          config.properties definieren. Dabei gelten die Regeln der 
          Klasse java.util.SimpleDateFormat.
        
################################################################### # Declaring the default format for dates in PDF documents. # Use the format strings according to java.util.SimpleDateFormat. ################################################################### # Using date only: #dateformat = 'D:'yyyyMMdd # Using date and time: dateformat = 'D:'yyyyMMddHHmmss
          Vorsicht: Wenn Sie hier ein Format dateformat = 'D:'yyyy angeben, werden
          Monat und Tag mit dem Wert 0101 ergänzt. Das dürfte in den seltensten Fällen
          so gewollt sein.
        
Sie können nur ein Format in der Konfigurationsdatei festlegen. Wenn Sie in einem Projekt PDF-Dokumente mit abweichendem Datumsformat testen möchten, können Sie den Weg über Properties nutzen und das formatierte Datum als Wert abfragen:
<testcase name="hasProperty_CreationDate"> <assertThat testDocument="documentInfo/documentInfo_allInfo.pdf"> <hasProperty name="CreationDate"> <matchingComplete>D:20131027172417+01'00'</matchingComplete> </hasProperty> <hasProperty name="CreationDate"> <startingWith>D:20131027</startingWith> </hasProperty> </assertThat> </testcase>
Sie können mit PDFUnit prüfen, ob das Erstellungsdatum eines PDF-Dokumentes nach oder vor einem gegebenen Datum liegt:
<testcase name="hasCreationDate_Before"> <assertThat testDocument="documentInfo/documentInfo_allInfo.pdf"> <hasCreationDateBefore withDate="2099-01-01" resolution="DATE" /> </assertThat> </testcase>
<testcase name="hasCreationDate_After"> <assertThat testDocument="documentInfo/documentInfo_allInfo.pdf"> <hasCreationDateAfter withDate="1999-01-01" resolution="DATE" /> </assertThat> </testcase>
Die jeweilige Unter- bzw. Obergrenze gehört nicht zum Gültigkeitszeitraum.
PDF-Dokumente enthalten neben dem Erstellungs- und Änderungsdatum noch das Ausstellungsdatum von Zertifikaten. Test dazu sind in Kapitel 3.21: „Signaturen und Zertifikate“ beschrieben.