E-Rechnung

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
khhuber
Beiträge: 4
Registriert: So 20. Okt 2024, 10:41

E-Rechnung

Beitrag von khhuber »

hallo zusammen,
ich möchte zur Erstellung einer E-Rechnung einen Druckertreiber erstellen, der anstatt des Standarddruckers ausgewählt werden kann.
So kann ich mir den Eingriff ins Druckprogramm der Software sparen.
Jemand ne Idee?

Ich danke euch.

kirchfritz
Beiträge: 227
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: E-Rechnung

Beitrag von kirchfritz »

Was hat eine E-Rechnung mit einem Drucktreiber zu tun?
Verstehe ich Dich richtig:
Du hast eine Software, und diese Software kann Rechnungen ausdrucken.
Dann sprichst Du von einer E-Rechnung. Was meinst Du damit konkret? Meinst Du damit, dass Du anstelle der ausgedruckten Rechnung die Rechnung im PDF-Format haben möchtest?
Dafür gibt es jede Menge an Druckertreiber, da musst Du keinen Druckertreiber neu erstellen.
Guckst Du hier: https://tools.pdf24.org/de/pdf-drucker

khhuber
Beiträge: 4
Registriert: So 20. Okt 2024, 10:41

Re: E-Rechnung

Beitrag von khhuber »

kirchfritz hat geschrieben: So 20. Okt 2024, 19:01 Du hast eine Software, und diese Software kann Rechnungen ausdrucken.
Dann sprichst Du von einer E-Rechnung. Was meinst Du damit konkret? Meinst Du damit, dass Du anstelle der ausgedruckten Rechnung die Rechnung im PDF-Format haben möchtest?
Richtig.
Eine E-Rechnung ist aber nicht einfach eine Rechnung im PDF-Format, sondern ein PDF mit eingebetteten XML- Daten.
Das können die handelsüblichen PDF-Drucker leider nicht.
Die Vorgaben kommen vom Gesetzgeber :-(

djdhg
Beiträge: 18
Registriert: Mo 8. Apr 2013, 17:12
OS, Lazarus, FPC: Win11, Debian 12.5, Lazarus: 2.2.6, FPC: 3.2.2
CPU-Target: 64Bit

Re: E-Rechnung

Beitrag von djdhg »

So ganz ohne Eingriff in deine Software wird das höchstwahrscheinlich nicht gehen.

Denn du wirst den XML Part (Egal ob X-Rechnung oder ZUGFeRD) - der in dem fertigen PDF-Dokument (PDF/A-3) enthalten sein muss, dann an deinen Treiber übergeben müssen.

edit: der khhuber war etwas schneller als ich.

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: E-Rechnung

Beitrag von u-boot »

Gibts schon Reader für die Formate ?
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Joh
Lazarusforum e. V.
Beiträge: 288
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: E-Rechnung

Beitrag von Joh »

Reader gibt es satt...
Auch offizielle. Und Validatoren für selbsterstellte Dateien.
Ich gehe jetzt mal vom Format ZUGFeRD aus.

Auch hier im Forum hat jemand einen Extraktor vorgestellt.

Ich selbst habe hier meine Lösung angegeben; eine Verfeinerung gab es aal Vortrag auf dem Lazarustreffen in Wittenberg. Die Zusammenfassung des Vortrags fehlt hier allerdings noch: man kommt ja zu nix; aktuell bin ich im Urlaub...

Aber unter der Suchfunktion zugferd sollte einiges zu Tage kommen.
Solange du nicht sagst, was du genau willst, wird dir keiner helfen können.
just my two Beer

khhuber
Beiträge: 4
Registriert: So 20. Okt 2024, 10:41

Re: E-Rechnung

Beitrag von khhuber »

djdhg hat geschrieben: So 20. Okt 2024, 19:53 So ganz ohne Eingriff in deine Software wird das höchstwahrscheinlich nicht gehen.

Denn du wirst den XML Part (Egal ob X-Rechnung oder ZUGFeRD) - der in dem fertigen PDF-Dokument (PDF/A-3) enthalten sein muss, dann an deinen Treiber übergeben müssen.
Ich weiss doch, was die Software an den Drucker übergibt. Damit müsste ich doch in meinem neu zu erzeugenden Treiber diese Daten übernehmen/ auslesen und als XML in PDF speichern können.

Benutzeravatar
Zvoni
Beiträge: 396
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: E-Rechnung

Beitrag von Zvoni »

Von hier: https://de.wikipedia.org/wiki/ZUGFeRD
Eine ZUGFeRD-Rechnung umfasst die visuelle Darstellung der Rechnung für den Menschen und maschinenlesbare strukturierte Daten. Die visuelle Rechnungs-Darstellung erfolgt in Form von PDF/A-3. Die maschinenlesbaren Daten im XML-Format werden dem PDF/A-3 als Anhang beigefügt. Somit dient das PDF als Container für die visuelle Darstellung als auch für die XML-Daten.
Heisst: Der XML-Part ist BESTANDTEIL des PDF's
Hat also in dem Sinne nix mit einem Druckertreiber zu tun.

Würde vielleicht eher in Richtung "pdfium" schielen
https://pdfium.googlesource.com/pdfium/
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

khhuber
Beiträge: 4
Registriert: So 20. Okt 2024, 10:41

Re: E-Rechnung

Beitrag von khhuber »

Zvoni hat geschrieben: Mo 21. Okt 2024, 09:20
Heisst: Der XML-Part ist BESTANDTEIL des PDF's
Hat also in dem Sinne nix mit einem Druckertreiber zu tun.
ja XML soll Bestandteil des PDF werden.
In einem normalen PDF liegen doch keine Daten im XML-Format vor, oder wie meinst du das?

Joh
Lazarusforum e. V.
Beiträge: 288
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: E-Rechnung

Beitrag von Joh »

khhuber hat geschrieben: Mo 21. Okt 2024, 09:10 Ich weiss doch, was die Software an den Drucker übergibt. Damit müsste ich doch in meinem neu zu erzeugenden Treiber diese Daten übernehmen/ auslesen und als XML in PDF speichern können.
so ganz trivial ist das ganze nicht.
Außerdem hast du noch nicht einmal verraten, wie du den Bericht erzeugst.
Du redest von Druckertreiber... Letztlich: was hat der mit Lazarus zu tun?
just my two Beer

Benutzeravatar
Zvoni
Beiträge: 396
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: E-Rechnung

Beitrag von Zvoni »

khhuber hat geschrieben: Mo 21. Okt 2024, 11:09
Zvoni hat geschrieben: Mo 21. Okt 2024, 09:20
Heisst: Der XML-Part ist BESTANDTEIL des PDF's
Hat also in dem Sinne nix mit einem Druckertreiber zu tun.
ja XML soll Bestandteil des PDF werden.
In einem normalen PDF liegen doch keine Daten im XML-Format vor, oder wie meinst du das?
Ich meine das in dem Sinne, dass du es nicht schaffen wirst, in LazReport deine DIN A4-Rechnung zu "designen", und dann zur Laufzeit aus deinen "Rohdaten" ein PDF zu erzeugen, bei dem du die XML-Daten irgendwo dranhängen kannst.

Das meinte ich damit: Hat nix mit Druckertreiber zu tun!

Deshalb auch mein Verweis an "pdfium": Du wirst den XML-Teil gemäss Definition des Formats an die "richtige" Stelle der PDF-Daten/File-Struktur (!!) selbst einfügen müssen, BEVOR das Ganze zu einem PDF/A-3 UMGEWANDELT wird
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Joh
Lazarusforum e. V.
Beiträge: 288
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: E-Rechnung

Beitrag von Joh »

Wie anderswo bereits gesagt:

einen Lazarus-Bericht als pdf-A1 zu kreieren ist recht einfach.
Das xml auch.
Das Zusammenführung beider Teile zu einer konformen ZUGferd-Datei ist mit einem Ghostscript-Script auch kein Hexenwerk.
(Solange man nicht versucht, das 500-zeilige, allerdings gutdokumentierte Postscript-Script zu verstehen).
just my two Beer

Soner
Beiträge: 734
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: E-Rechnung

Beitrag von Soner »

Joh hat geschrieben: Mo 21. Okt 2024, 13:15 ....
Das Zusammenführung beider Teile zu einer konformen ZUGferd-Datei ist mit einem Ghostscript-Script auch kein Hexenwerk.
(Solange man nicht versucht, das 500-zeilige, allerdings gutdokumentierte Postscript-Script zu verstehen).
Ich würde mich nicht mit Postscript herumschlagen. Lazreport verwendet für PDF-Export die Komponente PowerPDF, deshalb würde ich PowerPDF an die PDF-Version 1.7 (=PDF/A 3) anpassen. Ich nehme an PowerPDF verwendet bestimmt nicht so viele PDF-Funktion/Formate.
Dann würde ich dort ein Ereignis, wie OnGetXMLFile, einbauen, mit dem man XML-Datei für die Einbettung übergibt. Es wäre ziemlich praktisch.

Joh
Lazarusforum e. V.
Beiträge: 288
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: E-Rechnung

Beitrag von Joh »

Ähem,

ich würde eine Batch-Datei unter Windows (geht auch unter Linux, aber ich weiß nicht genau wie) wie:
@echo off
rem Doku: https://ghostscript.com/blog/zugferd.html

SET pfad=f:\Progs\RechnungTest\

"c:\Program Files\GS\gs10.03.1\bin\gswin64.exe" --permit-file-read=%pfad% -sDEVICE=pdfwrite -dPDFA=3 -sColorConversionStrategy=RGB -sZUGFeRDXMLFile=%pfad%factur-x.xml -sZUGFeRDProfile=%pfad%srgb.icc -sZUGFeRDVersion=2p1 -sZUGFeRDConformanceLevel="EN 16931" -o %pfad%invoice.GS.pdf %pfad%zugferd.ps %pfad%Invoice.pdf
nicht als mit Postscript rumschlagen betiteln.
Es ist halt ein Batch-Aufruf eines Postscript-Scripts und, das wichtigste: es funktioniert!

Man muß sich halt vorher mit ein paar Kommandozeilenparametern herumschlagen, aber (hallo), wir sind Programmierer.

Ich nehme Lazreport, erstelle die xml und führe beide mit dem obigen PS-Script zusammen.

Wenn du mir natürlich eine funktionierende Lazarus-interne Möglichkeit sagst, nehme ich diese mit Kußhand.
just my two Beer

Benutzeravatar
Zvoni
Beiträge: 396
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: E-Rechnung

Beitrag von Zvoni »

Joh hat geschrieben: Mo 21. Okt 2024, 23:35 Ähem,

ich würde eine Batch-Datei unter Windows (geht auch unter Linux, aber ich weiß nicht genau wie) wie:
@echo off
rem Doku: https://ghostscript.com/blog/zugferd.html

SET pfad=f:\Progs\RechnungTest\

"c:\Program Files\GS\gs10.03.1\bin\gswin64.exe" --permit-file-read=%pfad% -sDEVICE=pdfwrite -dPDFA=3 -sColorConversionStrategy=RGB -sZUGFeRDXMLFile=%pfad%factur-x.xml -sZUGFeRDProfile=%pfad%srgb.icc -sZUGFeRDVersion=2p1 -sZUGFeRDConformanceLevel="EN 16931" -o %pfad%invoice.GS.pdf %pfad%zugferd.ps %pfad%Invoice.pdf
nicht als mit Postscript rumschlagen betiteln.
Es ist halt ein Batch-Aufruf eines Postscript-Scripts und, das wichtigste: es funktioniert!

Man muß sich halt vorher mit ein paar Kommandozeilenparametern herumschlagen, aber (hallo), wir sind Programmierer.

Ich nehme Lazreport, erstelle die xml und führe beide mit dem obigen PS-Script zusammen.

Wenn du mir natürlich eine funktionierende Lazarus-interne Möglichkeit sagst, nehme ich diese mit Kußhand.
Hat eigentlich schonmal jemand so eine erzeugte (und viel wichtiger: funktionierende) ZugFERD-Datei mal auf links gedreht?
Heisst: Mal analysiert, wo was innerhalb der Datei-Struktur tatsächlich steht?
Anderst gesagt: Hat schon mal jemand die XML-Daten im PDF selbst gefunden?
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten