Open Ulukai opened 1 year ago
sehr interessant, danke für den report
hab einen test gebaut & eingecheckt mit single quotes, der läuft durch. Das erwähnte replaceAll greift auch nur auf dem verapdf-ausgabereport weil da was konkateniert werden muss.
Das erwähnte replaceAll greift auch nur auf dem verapdf-ausgabereport
Ja, das habe ich auch gemeint. Genau dieser verapdf-Ausgabereport wird aus irgendeinem Grund - evtl. irgendwelchen dependencies, Versionsunterschieden - mit Single-Quote ausgeliefert. Und da dann die erwähnte regex nicht greift und der ZUGFeRDValidator den verapdf-Ausgabereport mit eigenen Sachen konkateniert, bleibt diese XML-Deklaration irgendwo mitten im ZUGFeRDValidator-Ausgabereport stehen, was dann in ZUGFeRDValidator.java:234
die DocumentException verursacht.
kannst du den report mal anhängen? Welche version von Verapdf hat er sich denn da gezogen? Und reden wir von Windows, Linux oder ganz was anderem?
Windows 10 Java 11 (AdoptOpenJDK)
komisch das ist eigentlich korrekt, wie kann ich das reproduzieren?
Das weiß ich nicht! Ich kann es reproduzieren, indem ich in unserer Anwendung z.B. das angehängte PDF versuche zu validieren:
// Validierung
ZUGFeRDValidator zfv = new ZUGFeRDValidator();
String validationResult = zfv.validate(jasperPDF.getAbsolutePath());
Wir haben das ZUGFeRD mustangproject schon seit einigen Jahren bei uns über maven integriert und nun möchten wir auch den ZUGFeRDValidator einbinden. Dabei bin ich auf ein Problem gestoßen:
Folgendes ist mir dabei aufgefallen: /org/mustangproject/validator/PDFValidator.java:117
pdfReport = reportStream.toString("utf-8").replaceAll("<\\?xml version=\"1\\.0\" encoding=\"utf-8\"\\?>", "");
Dieses replaceAll() greift nicht, wenn die XML-Deklaration mit Single-Quotes geschrieben wird, sprich
<?xml version='1.0' encoding='utf-8'?>
, was bei mir aber gerade der Fall ist. Da im XML-Standard beide Schreibweisen erlaubt sind, macht es wahrscheinlich Sinn die Regex zu erweitern, damit beide Zeichen erkannt werden.