Ab Januar tritt eine wichtige Änderung in Kraft: Unternehmen sind gesetzlich verpflichtet, elektronische Rechnungen empfangen zu können. Diese Neuerung betrifft nahezu alle Organisationen, die geschäftliche Transaktionen abwickeln. Doch damit stellt sich die Frage, wie man sicher erkennen kann, ob eine Rechnung tatsächlich eine elektronische Rechnung ist und somit den gesetzlichen Anforderungen entspricht. Der Unterschied zwischen einer klassischen Papierrechnung, einer PDF-Datei und einer echten elektronischen Rechnung ist für viele nicht auf den ersten Blick erkennbar, da sie optisch oft ähnlich wirken.
Um diese Herausforderung zu lösen, wurde ein hilfreiches Werkzeug entwickelt: der sogenannte "Symolo Validator". Dieses Tool wurde speziell dafür geschaffen, Rechnungen zu analysieren und zu prüfen, ob sie den technischen Standards einer elektronischen Rechnung entsprechen. Elektronische Rechnungen sind an bestimmte Formate und Datenstrukturen gebunden, die eine automatisierte Verarbeitung ermöglichen. Der Validator erkennt diese Merkmale und gibt eine klare Auskunft, ob das vorliegende Dokument als elektronische Rechnung gilt oder nicht. Dies ist besonders für Unternehmen wichtig, die sich auf die Einhaltung der neuen Vorschriften verlassen müssen.
Die Nutzung des Symolo Validators ist denkbar einfach und erfordert keinerlei technisches Vorwissen. Um die Prüfung durchzuführen, müssen Sie lediglich die betreffende Datei hochladen. Das Tool analysiert das Dokument und liefert innerhalb kurzer Zeit ein Ergebnis. Dieses zeigt an, ob die hochgeladene Datei die Anforderungen an eine elektronische Rechnung erfüllt. Durch diese einfache Handhabung wird nicht nur sichergestellt, dass Unternehmen gesetzeskonform handeln, sondern auch der Übergang zur Nutzung elektronischer Rechnungen deutlich erleichtert.
Besonders erwähnenswert ist, dass Symolo den Validator kostenlos zur Verfügung stellt. Unternehmen und Nutzer können das Tool nutzen, ohne für die Analyse Gebühren zahlen zu müssen. Allerdings weist Symolo ausdrücklich darauf hin, dass das Tool ohne jegliche Garantie angeboten wird. Das bedeutet, dass die Ergebnisse des Validators zwar hilfreich sind, jedoch nicht als rechtlich bindend oder fehlerfrei garantiert werden können. Nutzer sollten sich dieser Einschränkung bewusst sein und im Zweifel weitere Prüfungen durchführen.
Die Einführung des Symolo Validators ist dennoch ein wertvoller Schritt, um Unsicherheiten im Umgang mit elektronischen Rechnungen zu beseitigen. Unternehmen können sich so auf ihre Kernaufgaben konzentrieren, ohne Zeit und Ressourcen für komplizierte Prüfungen aufwenden zu müssen. Mit diesem praktischen Tool wird die Umstellung auf die neuen Anforderungen effizienter und sorgt dafür, dass Unternehmen auf der sicheren Seite sind. Die kostenfreie Bereitstellung zeigt außerdem, wie Technologie zugänglich gemacht werden kann, um bürokratische Herausforderungen zu meistern und den Arbeitsalltag zu erleichtern.
Hier der Link: https://symolo.de/tools/zugferd_validate.html
Das PDF Format ist ein hervorragendes Format um Dokumente nicht nur per Email zu transportieren, sondern auch zum Drucken oder Archivieren. Die Unterstützung dieses Formats ist inzwischen so ziemlich überall verfügbar. Daher ist es naheliegend, dass auch Symolo dieses Format vollständig unterstützt. Intern wird zum Beispiel jeder einzelne Druckauftrag zuerst als PDF abgebildet und dann an den Drucker weitergereicht. Das bedeutet, dass immer die Möglichkeit zur Verfügung steht, dass gegebenenfalls das Dokument auch nur gespeichert wird oder zusätzlich als Archiveintrag hinterlegt werden kann. Zudem ist das zu erwartende Druckbild immer schon vorher ersichtlich. C# bietet hier schon seit langem Bibliotheken, die aus Java übernommen wurden. Jetzt ist es immer recht aufwendig in C# einfache Aufgaben mit PDFs zu erledigen, da dann immer erstmal ein komplettes Projekt aufgemacht werden muss und wir die ganzen großartigen Typenprüfungen haben. Mit Python kann man meistens schneller ein Prototyp entwickeln und die Logik grundsätzlich mal prüfen, bevor das Ganze dann sauber als C# in den Symoloserver wandert. Alternativ kann man natürlich auch das Python in de Server verfrachten und nutzen. Dazu ist gar nicht so viel notwendig.
Wie immer geht es mit entsprechenden Bibliotheken los:
Plumber wird hierbei für die Analyse verwendet und PyPDF2 für die Verwaltung der Datei.
Fangen wir mal mit der Verwaltung an. Möchte man z.B. die Dateien in einzelne Seiten splitten ist das jetzt ganz einfach:
Die Analyse des Inhaltes kann, mithilfe von pdfplumber, genauso einfach erfolgen:
Und schon kann man die Text zum Beispiel mithilfe von Regex einfach analysieren und Informationen aus den Dateien gewinnen.
Hier sollte vielleicht noch erwähnt werden, dass das Verfahren so nicht auf Bilder in PDFs anwendbar ist. Entweder ist die PDF Datei einen elektronisch erstellte Datei oder es wurde nachträglich entsprechende OCR Daten angefügt. Für einen schnellen Test ist dieses Verfahren aber mehr als ausreichend. Wenn eine OCR Analyse benötigt wird, bringt der Symoloserver dafür bereits passende Funktionen mit. Da der Server ja unkompliziert via Python angesprochen werden kann, ist auch dann immer noch ein schnelles Prototypen unkompliziert realisierbar.
Wenn man mit dem Symolo Server kommunizieren will, ist nicht einfacher als mit einem Websocket darauf zuzugreifen. Das Protokoll ist einfach und lässt sich schnell umsetzten. Keine kompizierten XML Querys oder umfangreiche Anmeldung ist erforderlich. Lediglich ein Autentifizierungstoken muss vorliegen und kann im Vorfeld angefragt werden. Oder, wenn es komplizierter sein soll, kann man auch eine Sitzung anfordern und ist da sogar mit einer Benutzerkennung unterwegs. Mithilfe dieses Verfahrens lassen sich kleinere Anforderungen schnell umsetzten und der Websocket ist inzwischen in den meisten höheren Programmiersprachen Out-of-the-Box verfügbar. Zumindest in den Programmiersprachen in denen Symolo am meisten unterwegs ist. Inzwischen gehört auch Python dazu, da getreu dem Motto, "the right tool for the job", Python bestimmte Aufgaben deutlich eleganter oder effektiver erledigen kann als eine andere höhere Programmiersprache.
Um nun mit dem Symoloserver in Kontakt zu treten ist lediglich das websocket-client paket erforderlich.
Um die Kommunikation zu vereinfachen können wir noch die JSON Bibliothek importieren, die unser Nachrichtenerstellen nochmal vereinfacht.
Nun ist es uns zum Beispiel möglich ein einfaches Dateihochladen zu realisieren:
Damit kann nun eine Datei im Server hinterlegt werden. Wir verzichten hier auf die Auswertung der Antwort, weil diese hier nicht relevant ist. Wenn das schief geht, kann das im Serverlog eingesehen werden.
Natürlich kann man den Server auch nach Informationen fragen und bekommt sogar Antwort. Auch hier ist das Protokoll einfach gehalten:
Hier ist die Interpretation der Antwort von der Frage abhängig, der Server versucht immer den einfachsten Datentypen zu senden. Kompliziertere Strukturen werden in JSON abgebildet. Das lässt sich in Python aber auch wieder einfach laden:
Mithilfe dieser Werkzeuge wird die Kommunikation mit dem Symoloserver einfach möglich und sämtliche Funktionen des Servers können nun verwendet werden. Hierzu zählen z.B. dynamicszugriff via SQL, erstellen und drucken von PDFs unter Windows wie Linux, Zugriff auf verschiedenste objektrelationale Datenbanken, Dateiverwaltung oder Nachrichtenverteilsystem. Darüber sollte ich mal was schreiben.
Nachdem das jetzt geklärt ist, bin ich mal gespannt, was in Python damit alles angestellt wird.
Wer wollte nicht schon immer mal wissen wie viele Pixel eigentlich ein Millimeter sind? Die Frage lässt sich leider nicht ganz eindeutig beantworten, da es immer von der DPI abhängt. Also der Pixeldichte. Bei einem Monitor ist diese Dichte normalerweise deutlich weniger als bei einem Ausdruck auf Papier. Aber auch da gibt es Unterschiede, wenn ich z.B. ein Foto ausdrucken möchte. Da ich momentan viele Ausdrucke designe und leider aufgrund der Umstände häufig nicht vor dem betreffenden Drucker stehen kann, um mir das Ergebnis anzusehen bin ich gezwungen das Ganze auf dem Reisbrett vorher schon mal durchzuspielen und dem Kunden am besten ein PDF mit seiner Anforderung zum Testen schicken kann. Ein PDF hat den Vorteil, dass der Ausdruck wie designt ausgedruckt werden kann. Inklusive Schriftarten und Bildern. Nur die Abmessung sollte man vorher kennen, damit man das Ganze noch richtig zurechtschieben kann. Ein Kunde nennt aber im Normalfall Millimeter als Maß. Das ist beim Designen meistens hinderlich, da das ein permanentes Umrechnen erfordert, wenn es darum geht kleinere Korrekturen mit statischen Werten vorzunehmen. Wenn man das Design bereits mit Pixelwerten durchführt, übernimmt der Drucker die Rückrechnerei später für uns. Damit der Kunde weiterhin mit dem Lineal messen kann und ich bereits im Vorfeld pixelperfekte Layouts liefern möchte hab ich einen kleinen Umrechner geschrieben, der es mir ermöglich mit meiner Entwicklung im Bereich der Pixel Schalten und Walten zu können, aber auf die Wunschmaße nicht verzichten zu müssen.
Das Tool ist erreichbar unter:
Und reiht sich wunderbar in die Liste der anderen Tools ein. Auch dieses Tool kann man sich, wenn es öfter gebraucht wird, einfach als APP verknüpfen.