PDF Vergleichen

Status
Nicht offen für weitere Antworten.

ARadauer

Top Contributor
Hi ich bin gerade dabei, ein kleines Test System für PDF Generatoren zu schreiben.
Ich habe nun ein paar PDF Files erstellt und müsste sie auf Unterschiede vergleichen. Wie gehe ich an so ein Problem heran?
Ich denke daran die PDFs in Bilder umzuwandeln, zu subtrahieren und vielleicht dann das Differnzbild azuszuwerten...

Hat schon schon mal jemand sowas gemcht. bzw wie könnte ich am einfachstenein PDF in ein Jpg umwandeln?

Danke
 
Was genau willst du denn Testen?
Ob der pdf-generator richtig funktioniert? Hast du den geschrieben?
 
Was genau willst du denn Testen?
Ob der pdf-generator richtig funktioniert? Hast du den geschrieben?

Unterschiede zwischen Ibex Versionen...

java.lang.ArrayIndexOutOfBoundsException: 1
at com.sun.pdfview.colorspace.PDFColorSpace.getColorSpace(PDFColorSpace.java:196)
at com.sun.pdfview.PDFImage.createImage(PDFImage.java:160)
at com.sun.pdfview.PDFParser.doImage(PDFParser.java:950)
at com.sun.pdfview.PDFParser.doXObject(PDFParser.java:935)
at com.sun.pdfview.PDFParser.iterate(PDFParser.java:704)
at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
at com.sun.pdfview.BaseWatchable.execute(BaseWatchable.java:263)
at com.sun.pdfview.BaseWatchable.go(BaseWatchable.java:197)
at com.sun.pdfview.PDFParser.doForm(PDFParser.java:992)
at com.sun.pdfview.PDFParser.doXObject(PDFParser.java:937)
at com.sun.pdfview.PDFParser.iterate(PDFParser.java:704)
at com.sun.pdfview.BaseWatchable.run(BaseWatchable.java:101)
at java.lang.Thread.run(Thread.java:619)
danke sun...


Geht mir um so dinge wie.. ist eh nix Abgeschnitten, sind die Bilder gleich groß, ist alles an der richtigen stelle...

Konkreter vielleicht, eine andere Abteilung sagt: "wir wollen die Version unserers XSL:FO Processors umstellen, hat das eh keine Auswirkungen bei euch?" Ich muss nun einen rießen Haufen Vorlagen testen... das will ich einwenig automatisieren...
 
Zuletzt bearbeitet:
Das ist nicht Suns Fehler, bedanke dich bei dem Entwickler der auf die idiotische Idee kam com.sun.* packages zu verwenden, das soll man nämlich nicht, denn diese sind intern, können sich jederzeit ändern und sind nicht Teil des JDKs.

In der Tat, ein unangenehmes Problem, viellciht wäre hier der Weg über eine high-level PDF Api besser um die Dokumente zu vergleichen als über Bilder, ein eigener Assert wäre jedenfalls das Ziel.
 
Das ist nicht Suns Fehler, bedanke dich bei dem Entwickler der auf die idiotische Idee kam com.sun.* packages zu verwenden, das soll man nämlich nicht, denn diese sind intern, können sich jederzeit ändern und sind nicht Teil des JDKs.
Das war ich, vor... 15 Minuten... Ich wollte einfach schnell ein Bild aus dem PDF machen, das war nur mal ein Versuch...

über eine high-level PDF Api besser um die Dokumente zu vergleichen
Wie meinst du das? Bzw welche meinst du?
 
k.A. ehrlich gesagt, hat PDFBox da nix?

Konkreter vielleicht, eine andere Abteilung sagt: "wir wollen die Version unserers XSL:FO Processors umstellen, hat das eh keine Auswirkungen bei euch?" Ich muss nun einen rießen Haufen Vorlagen testen... das will ich einwenig automatisieren...
Dazu sind normale Unitest bzw. learning Tests sehr gut geeignet, klappt prima bei "normalen Frameworks (Hibernate, Spring, etc. pp.), dein Problem ist eben das Format (pdf), wie gesagt, würde da nicht Bilder vergleichen sondern versuchen das über high-level zu lösen, schlimmstenfalls das PDF File manuell parsen...

Was auch eght wäre das du eine erstellte & verifizierte Version des PDF unter deinem Testressourcen ablegst und es als "expected" betrachtest, dann dagegen deine neu erstellten und zu verifizierenden PDFs vergleichst.

NAHCTRAG: Bin gerade über jpdfunit gestolpert, k.A. ob das funnzt, würde ich an deiner Stelle aber mal testen 😉
 
Zuletzt bearbeitet von einem Moderator:
Wie soll ich vergleichen? Um das gehts mir. Was meinst du mit high-level, bzw manuell parsen?
Es geht mir darum, ob die PDF gleich aussehen sollen.

PDFBox ... schau ich mir gleich an...
 
Was ich meine ist, dass du rigendwie eine Methode haben müsstest, die ungefähr so aussieht:
Java:
public static void assertPdfFilesAreEqual(String message, File expected, File actual) {
...
}
Oder so ähnlich.

Bei solchen Dingen sind autom. Tests immer kompliziert.
 
jpdfunit ist nicht gerade das was ich suche. Es geht mir wirklich primär um das Aussehen, (Abstände, Ränder usw...) des PDF. Irgendwelche Texte die im PDF sein müssen zu überprüfen, macht keinen Sinn, da diese sicher drinnen sind, nur ob an den richtigen Stellen, das ist die Frage... bzw "richtig" stimmt auch nicht ganz... sondern eher an der selben Stellen wie beim anderen PDF..

PDFBox hat mir da schon mehr geholfen. Jetzt hab ich Bilder der PDFs und möchte diese miteinander Vergleichen. Es geht mir nicht darum, dass ich jeden Tag 200 Tests ausführe, sondern eher dass ich einen Testaufwand von 20 Stunden den ich jede 6 Monate habe auf 2 Stunden reduziere...

Meine Frage jetzt: Ich habe zwei BufferedImages und möchte in Diffenzbild daraus erstellen, wie mache ich das am einfachsten?

Ich weiß noch in Matlab war das einfach sowas... img3 = img2-img1;
 
Java:
 BufferedImage img1 = readFile(pdf[0]);
      BufferedImage img2 = readFile(pdf[1]);   
      BufferedImage img3 = new BufferedImage(img1.getWidth(), img1.getHeight(), img1.getType());
      
      Graphics2D g2 =(Graphics2D) img3.getGraphics();
      g2.drawImage(img1,0,0, null);
      g2.setXORMode(Color.white);
      g2.drawImage(img2,0,0, null);
      ImageIO.write(img3, "jpeg", new File("c://out/new.jpg"));
....
das wollte ich...
 
Die Bilder die mit PDFBox erstellt sehen anders aus als das PDF im Acrobat oder im Druck... tja dann war das umsonst...
 
Das hängt halt immer davon ab, was für Features in den Dokumenten sind. Je ausgefallener, desto unwahrscheinlicher ist natürlich, dass freie Libraries diese unterstützen. Der Support ist da sehr gemischt. Du kannst Dir ja mal JPedal anschauen, das scheint wohl recht gut zu sein.

Oder Du wartest nochmal sechs bis zwölf Monate, bis meine PDF-Library fertig ist... 😉
 
Die Bilder die mit PDFBox erstellt sehen anders aus als das PDF im Acrobat oder im Druck... tja dann war das umsonst...

Das hätte ich dir auch gleich sagen können.

Der Acrobat hat auch noch eine Einstellung für Bildschirmbetrachtung die das PDF-Verändern, zumindest Farbwerte, Kantenglättung, etc....

Vor einiger Zeit hatte ich auch mit PDF-Erstellung mit iText zu tun.

Abhängig, davon ob eine bestimmte Grafik auf einer Seite eingebunden war, veränderten sich andere Farbwerte auf der Seite beim Betrachten mit dem Acrobat-Reader.

Das selbe Dokument im Foxit-Reader lieferte die in iText angegebenen Farbwerte zurück.

Acrobat geht da einen sehr eigenen Weg, man könnte fast meinen die wären eine Tochter von MS.
 
Der Acrobat hat auch noch eine Einstellung für Bildschirmbetrachtung die das PDF-Verändern, zumindest Farbwerte, Kantenglättung, etc....
ein Rahmen der im Druck und im Acrobat durchgängig ist, ist im erstellten Bild strichliert...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben