Kapitel 4. Vergleiche gegen ein Referenz-PDF

4.1. Überblick

Viele Tests folgen dem Prinzip, ein einmal getestetes PDF-Dokument als Referenz für neu erstellte Dokumente zu benutzen. Solche Tests sind sinnvoll, wenn Prozesse, die das PDF erstellen, geändert werden, das Ergebnis aber unverändert bleiben soll.

Initialisierung

Die Instantiierung eines Referenz-Dokumentes erfolgt über die Methode ->and(..):

#
# Test: compare text with reference document
#
lives_ok {
  my $filenameTest   = "$resources_dir/master/compareToMaster_encrypted.pdf";
  my $filenameMaster = "$resources_dir/master/compareToMaster.pdf";
  my $userPassword   = 'user-password';
  AssertThat->document($filenameTest, $userPassword)   1
            ->and($filenameMaster)                     2
            ->restrictedTo(FIRST_PAGE)
            ->haveSameText()
  ;
} "compare text with reference document";

1

Das Test-Dokument ist verschlüsselt und wird mit dem Passwort geöffnet.

2

Das Referenz-Dokument ist hier nicht verschlüsselt. Falls es verschlüsselt wäre, muss das Passwort der Methode ->and() als zweiter Parameter übergeben werden.

Passwörter dienen nur zum Öffnen der Dokumente, die Tests werden von dem Passwort nicht beeinflusst.

Überblick

Die folgende Liste gibt einen vollständigen Überblick über die vergleichenden Tests von PDFUnit. Links führen zu Kapiteln, die den jeweiligen Test ausführlich beschreiben.

Die folgende Liste gibt einen vollständigen Überblick über die vergleichenden Testgebiete von PDFUnit. Die Kapitel sind aber nicht in diesem Handbuch beschreiben, sondern im Handbuch von PDFUnit-Java, letztendlich um Redundanzen zu vermeiden, die über kurz oder lang zu einer fehlerhaften Dokumentation führen würden. Hier der Link zum PDFUnit-Java Handbuch: http://www.pdfunit.com/de/documentation/java/.

# Methods to compare two PDF documents:
# 
# The detailed descriptions can be found in the manual of PDFUnit-Java (to avoid redundancy).
# The names of the methods are exactly the same.
#
# see  http://www.pdfunit.com/de/documentation/java/  
#  

->haveSameAccessPermission()    
->haveSameAccessPermission(..)  
->haveSameAppearance()          
->haveSameAuthor()              
->haveSameBookmarks()                 
->haveSameCreationDate()              
->haveSameCreator()             
->haveSameEmbeddedFiles(..)     
->haveSameFieldsByName()              
->haveSameFieldsByValue()             
->haveSameFormat()                    
->haveSameImages()                    
->haveSameJavaScript()                
->haveSameKeywords()                  

...  continued
... continuation:

->haveSameLanguageInfo()              
->haveSameLayerNames()                
->haveSameModificationDate()          
->haveSameNamedDestinations()     
->haveSameNumberOfBookmarks()               
->haveSameNumberOfEmbeddedFiles() 
->haveSameNumberOfFields()            
->haveSameNumberOfImages()            
->haveSameNumberOfLayers()            
->haveSameNumberOfNamedDestinations()
->haveSameNumberOfPages()             
->haveSameProducer()                  
->haveSameProperties()                
->haveSameProperty(..)                
->haveSameSubject()                   
->haveSameTaggingInfo()               
->haveSameText()                      
->haveSameTitle()                     
->haveSameXFAData()                   
->haveSameXMPData()                   

Hier noch einmal der Link zum PDFUnit-Java Handbuch: http://www.pdfunit.com/de/documentation/java/.