From 8df75e2f277b893614528b4c3b6d31b4c7d9ebbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jochen=20Sta=CC=88rk?= Date: Wed, 29 Aug 2018 14:12:34 +0200 Subject: [PATCH] see history --- History.md | 6 ++++ doc/MustangDev.en.odt | Bin 181304 -> 183403 bytes .../ZUGFeRD/ZUGFeRDImporter.java | 30 ++++++++++++++++++ .../org/mustangproject/toecount/Toecount.java | 10 ++++-- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/History.md b/History.md index 645d4b64..f04d6efc 100644 --- a/History.md +++ b/History.md @@ -1,3 +1,9 @@ +1.5.4 +===== +2018-08-29 + +Fixed #62 fail gracefully on commandline extraction of XML if none is present. +New public function: ZUGFeRDImporter.getUTF8 returns raw XML without Byte Order Mark, if one had been used. 1.5.3 ===== diff --git a/doc/MustangDev.en.odt b/doc/MustangDev.en.odt index a87167151bcd3c54e1c66a5cc94b72f68adce0a8..4acb2eb2415af44614513652d8fbef07f36d64bb 100644 GIT binary patch delta 18064 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 delta 15925 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 diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java index 538082fe..07315afd 100644 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java @@ -495,7 +495,37 @@ public class ZUGFeRDImporter { return new String(rawXML); } + /** + * + * @return return UTF8 XML (without BOM) of the invoice + */ + public String getUTF8() { + if (rawXML == null) { + return null; + } + if (rawXML.length<3) { + return new String(rawXML); + } + + + byte[] bomlessData; + + if ((rawXML[0] == (byte) 0xEF) + && (rawXML[1] == (byte) 0xBB) + && (rawXML[2] == (byte) 0xBF)) { + // I don't like BOMs, lets remove it + bomlessData = new byte[rawXML.length - 3]; + System.arraycopy(rawXML, 3, bomlessData, 0, + rawXML.length - 3); + } else { + bomlessData = rawXML; + } + + return new String(bomlessData); + } + + /** * Returns the raw XML data as extracted from the ZUGFeRD PDF file. */ public byte[] getRawXML() { diff --git a/src/main/java/org/mustangproject/toecount/Toecount.java b/src/main/java/org/mustangproject/toecount/Toecount.java index 5d11d2e8..0469f4b6 100755 --- a/src/main/java/org/mustangproject/toecount/Toecount.java +++ b/src/main/java/org/mustangproject/toecount/Toecount.java @@ -368,11 +368,17 @@ public class Toecount { zi.extract(pdfName); try { - Files.write(Paths.get(xmlName), zi.getRawXML()); + byte[] XMLContent=zi.getRawXML(); + if (XMLContent==null) { + System.err.println("No ZUGFeRD XML found in PDF file"); + + } else { + Files.write(Paths.get(xmlName), XMLContent); + System.out.println("Written to " + xmlName); + } } catch (IOException e) { e.printStackTrace(); } - System.out.println("Written to " + xmlName); } else if (a3only) { /*