Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   E-Rechnung (https://www.delphipraxis.net/216052-e-rechnung.html)

khh 20. Okt 2024 11:22

E-Rechnung
 
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.

sh17 20. Okt 2024 11:31

AW: E-Rechnung
 
An sich eine gute Idee, nur irgendwie muss man dem PDF-Drucker ja das XML-File übergeben, welches mit in die PDF integriert werden soll. Das können nicht mal die üblichen PDF-Drucker am Markt.

Uwe Raabe 20. Okt 2024 12:02

AW: E-Rechnung
 
Ich vermute, deswegen will er ja gerade einen Druckertreiber erstellen. Leider ist das Erstellen eines Treibers in Delphi alles andere als trivial.

himitsu 20. Okt 2024 12:44

AW: E-Rechnung
 
Man müsste erstmal 'nen Standard durchsetzen, wie man solche Zusatzdaten im Datanstom an Drucker(Treiber) mitgeben könnte.

Oder man baut sich oder lässt bauen, einen speziellen Druckertreiber, bei dem das möglich ist
und wenn es mit diesem einem Treiber Probleme gibt, ist man am Arsch.

Oder man druckt erstmal und fügt das nachträglich in die PDF ein,
aber dafür benötigt man dann eine Komponente, welche PDF bearbeiten kann
und wenn man sowas schon hat, dann kann man die PDF gleich direkt erzeugen und spart sich externe Abhängigkeiten.

khh 20. Okt 2024 19:10

AW: E-Rechnung
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1542323)
Ich vermute, deswegen will er ja gerade einen Druckertreiber erstellen. Leider ist das Erstellen eines Treibers in Delphi alles andere als trivial.

Richtig. Meine Idee ist, den Druck bzw. die Daten, sprich Rechnung, die normal auf dem Drucker ausgegeben werden mittels Druckertreiber abzugreifen, daraus ein PDF zu erstellen und die XML-Daten zu integrieren.
Ich möchte halt vermeiden ein seit 15 Jahren fehlerfrei laufendes Programm anzufassen.
Dem Kunden trotzdem zu ermöglichen die gesetzlichen Anforderungen an die Ausgabe von E-Rechnung zu erfüllen.

Noch irgendwelche Ideen? Muss ja auch nicht unbedingt alles in Delphi /Lazarus sein.

khh 20. Okt 2024 19:11

AW: E-Rechnung
 
Zitat:

Zitat von sh17 (Beitrag 1542320)
An sich eine gute Idee, nur irgendwie muss man dem PDF-Drucker ja das XML-File übergeben, welches mit in die PDF integriert werden soll. Das können nicht mal die üblichen PDF-Drucker am Markt.

ja, leider, eben drum meine Idee.

Olli73 20. Okt 2024 19:23

AW: E-Rechnung
 
Was wird denn zum Drucken verwendet (Report-Generator, TPrinter, ...)?

sh17 21. Okt 2024 06:55

AW: E-Rechnung
 
man könnte jeden beliebigen PDF Drucker nehmen und die PDF dann "manuell" mit der XML verbinden. Je nachdem wie viel Rechnungen so im Monat geschrieben werden, wäre das für ältere Softwareprodukte möglich.

harfes 21. Okt 2024 08:57

AW: E-Rechnung
 
Ich meine FastReport hatte da mal eine Anleitung, wie nach einer PDF-Erstellung die XML-Datei via Programmcode angehängt werden kann...die xml-Datei muss aber vorher erstellt werden. In der Vollversion gibt es ein "zugferd demo project".

Hartmut

khh 21. Okt 2024 09:16

AW: E-Rechnung
 
Zitat:

Zitat von harfes (Beitrag 1542339)
Ich meine FastReport hatte da mal eine Anleitung, wie nach einer PDF-Erstellung die XML-Datei via Programmcode angehängt werden kann...die xml-Datei muss aber vorher erstellt werden.

Hartmut

Die PDF ist ja nicht das Problem.
Zur Erstellung der XML-Daten muss ich die "normale" Druckausgabe auslesen und verarbeiten.
Die Struktur der Rechnung ist mir ja bekannt, deshalb die Idee über einen Druckertreiber zu arbeiten.
Das alte Programm anfassen zu müssen, will ich vermeiden.

khh 21. Okt 2024 09:18

AW: E-Rechnung
 
Zitat:

Zitat von sh17 (Beitrag 1542338)
man könnte jeden beliebigen PDF Drucker nehmen und die PDF dann "manuell" mit der XML verbinden. Je nachdem wie viel Rechnungen so im Monat geschrieben werden, wäre das für ältere Softwareprodukte möglich.

Ich denke das wäre eine Option. Die XML muss ich dazu aber auch erzeugen.

khh 21. Okt 2024 09:27

AW: E-Rechnung
 
Zitat:

Zitat von Olli73 (Beitrag 1542335)
Was wird denn zum Drucken verwendet (Report-Generator, TPrinter, ...)?

zum Druck verwendet das Programm TPrinter.

Papaschlumpf73 21. Okt 2024 11:11

AW: E-Rechnung
 
Zitat:

Zitat von khh (Beitrag 1542340)
Die PDF ist ja nicht das Problem.
Zur Erstellung der XML-Daten muss ich die "normale" Druckausgabe auslesen und verarbeiten.

Das geht bestimmt nach hinten los :-) Andersrum (aus der XML mache auch eine PDF) schon eher...

Daniel 21. Okt 2024 11:22

AW: E-Rechnung
 
Das ist ja die Grundidee, die von 7-PDF realisiert wurde.

https://www.7-pdf.de/zugferd-pdf-erstellen

Die Scannen die PDF-Datei nach einer Markierung, und wenn sie dann eine dazu passende XML finden, fummeln sie beides zusammen. Soweit die Theorie. Das klingt auch für mich zunächst mal ganz charmant, ich wollte mir das bei Gelegenheit mal ansehen, weil dies - wenn es denn zuverlässig funktioniert - eine sehr einfache Lösung wäre, diesen Export nachzurüsten. Wenn auch zum Preis dieser externen Abhängigkeit zu 7-PDF.

khh 21. Okt 2024 11:27

AW: E-Rechnung
 
[QUOTE=Papaschlumpf73;1542356]
Zitat:

Zitat von khh (Beitrag 1542340)
Das geht bestimmt nach hinten los :-) Andersrum (aus der XML mache auch eine PDF) schon eher...

Das ist mir ja egal, ob ich zuerst die XML erstelle, oder das PDF.
ich muss auf jeden Fall die Daten aus der Druckausgabe auslesen, wenn ich am Programm nix verändern will. Was ich danach mache ist ja zweitrangig.

khh 21. Okt 2024 11:41

AW: E-Rechnung
 
Zitat:

Zitat von Daniel (Beitrag 1542358)
Das ist ja die Grundidee, die von 7-PDF realisiert wurde.

https://www.7-pdf.de/zugferd-pdf-erstellen

Die Scannen die PDF-Datei nach einer Markierung, und wenn sie dann eine dazu passende XML finden, fummeln sie beides zusammen. Soweit die Theorie. Das klingt auch für mich zunächst mal ganz charmant, ich wollte mir das bei Gelegenheit mal ansehen, weil dies - wenn es denn zuverlässig funktioniert - eine sehr einfache Lösung wäre, diesen Export nachzurüsten. Wenn auch zum Preis dieser externen Abhängigkeit zu 7-PDF.

werd ich mir auch mal ansehen, aber ich bezwiefle dass das zuverlässig die Rechnungsdaten ausliest.
Aber der Ansatz ist schon der den ich brauche.

Hab mir das jetzt angeschaut. Kann ich aber nicht gebrauchen, da wird das fertige XML erwartet.
Gerade das will ich aber aus der Rechnung auslesen.

Frickler 21. Okt 2024 13:19

AW: E-Rechnung
 
Früher gabs mal ein Tool namens "RedMon", damit konnte man eine Druckausgabe auf einen virtuellen Drucker an ein beliebiges Programm weiterleiten. Das läuft aber leider nur bis Windows 7.
Auf der Suche danach fand ich folgendes: https://en.wikipedia.org/wiki/List_o...inter_software. Vielleicht hilfts weiter.

khh 21. Okt 2024 14:11

AW: E-Rechnung
 
Zitat:

Zitat von Frickler (Beitrag 1542370)
Auf der Suche danach fand ich folgendes: https://en.wikipedia.org/wiki/List_o...inter_software. Vielleicht hilfts weiter.

danke , schau ich mir mal an

HolgerX 22. Okt 2024 12:38

AW: E-Rechnung
 
Hmm..

Zitat:

Zitat von Frickler (Beitrag 1542370)
Früher gabs mal ein Tool namens "RedMon", damit konnte man eine Druckausgabe auf einen virtuellen Drucker an ein beliebiges Programm weiterleiten. Das läuft aber leider nur bis Windows 7.
Auf der Suche danach fand ich folgendes: https://en.wikipedia.org/wiki/List_o...inter_software. Vielleicht hilfts weiter.

Also RedMon (Version 1.9, http://www.ghostgum.com.au/software/redmon.htm ) läuft auch unter Windows 11 problemlos...
Er wurde nur nach Win7 nicht weiterentwickelt, jedoch scheint sich da bei MS nichts geändert zu haben.


Das Problem mit XML und 'Druckertreiber' ist nur, dass Drucker unter Windows generell die Rechnung auf Papier bringen und 'Papier' keinen Speicher für XML hat ;) Somit kann einem regulären Druckertreiber auch kein XML mitgegeben werden.
Die Umleitung des Ausdruckes in eine PDF ändert hier nichts.

Nur wenn deine Applikation selber direkt das PDF erzeugt (ohne Umweg über Drucken!), kann diese dann das XML dazu packen. Oder es muss ein ganz spezieller Drucker in einer Skriptsprache angesprochen werden, aber auch hier müsste deine Applikation die Skriptsprache einprogrammiert bekommen.


Die einzige Option, welche mir hier einfällt, ist folgendes:
- Redmon (für den Port)
- Druckertreiber für einen PostScript-Drucker verwenden.
- Die Roh-Daten (von Redmon an dein Tool geliefert) parsen
-> aus den PostScriptdaten (wenn vorhanden) das XML-Dokument erzeugen
-> Weiterleiten, z.B. an GhostScript (Achtung Linzenz!)
-> Dann das durch GS erstellte PDF um das XML-Dokument erweitern (wie und wo dies ins PDF gehört ???? k.a.)

himitsu 22. Okt 2024 12:49

AW: E-Rechnung
 
Ginge schon .... der Könnte das XML ja via MicroDots auf der Seite verstecken, so, wie er heimlich seine ID versteckt (damit die Polizei weiß, dass du den Erpresserbrief geschrieben hast)

Es ging ja erstmal um einen Standard, damit sämtliche Druckertreiber sowas bekommen könnten ... ob sie es dann nutzen oder nicht, war erstmal egal,
Hauptsache alle Treiber, welche es den Druck irgendeine Datei umleiten, würden die selbe Methode benutzen.

HolgerX 22. Okt 2024 13:03

AW: E-Rechnung
 
Hmm..

Zitat:

Zitat von himitsu (Beitrag 1542415)
Ginge schon .... der Könnte das XML ja via MicroDots auf der Seite verstecken, so, wie er heimlich seine ID versteckt (damit die Polizei weiß, dass du den Erpresserbrief geschrieben hast)

Es ging ja erstmal um einen Standard, damit sämtliche Druckertreiber sowas bekommen könnten ... ob sie es dann nutzen oder nicht, war erstmal egal,
Hauptsache alle Treiber, welche es den Druck irgendeine Datei umleiten, würden die selbe Methode benutzen.

Aber dennoch müsste er dieses zunächst in sein Programm einprogrammieren.
Und genau dass möchte er ja nicht, weshalb er es mit einem Drucker (Papier ging schon immer) versucht.

Frickler 22. Okt 2024 14:22

AW: E-Rechnung
 
Zitat:

Zitat von HolgerX (Beitrag 1542414)
Das Problem mit XML und 'Druckertreiber' ist nur, dass Drucker unter Windows generell die Rechnung auf Papier bringen und 'Papier' keinen Speicher für XML hat ;) Somit kann einem regulären Druckertreiber auch kein XML mitgegeben werden.
Die Umleitung des Ausdruckes in eine PDF ändert hier nichts.

Sein Workflow:
1) alte Software druckt eine Rechnung nach RedMon
2) RedMon leitet den Druck in ein Utility um, was er noch schreiben muss
3) Dieses Utility extrahiert die Rechnungsinformationen aus dem Ausdruck (EMF Datei) zum einen als XML und zum anderen als PDF, und fügt beides zusammen, und speichert das Resultat weg. Das dürfte ganz schön hart werden!

Nachtrag:

Warum nicht so:
1) Rechnung drucken auf einen PDF-Drucker, der einen automatischen Dateinamen vergeben kann, in einen vorgegebenen Ordner
2) Auf dem Ordner eine Ordnerüberwachung mit eigener Software
3) diese Software lauert auf neue PDFs, scannt die, holt die Infos raus, macht ne XML und hängt die an. Am Ende mit passendem Namen in passenden Ordner speichern.

HolgerX 22. Okt 2024 15:46

AW: E-Rechnung
 
Hmm...

Vom Prinzip her sind beide Workflows ähnlich, nur dass er bei Option 2 für die Erstellung des PDF-Dokumentes einen beliebigen PDF-Drucker verwenden kann.

Die Software für Option 1 oder 2 mit dem Parser muss er auf jeden fall selber erstellen.

Bei Option 1 kann direkt auf die Original PostScript Daten zugreifen, bei Option 2 muss er sie aus dem PDF-Format heraus holen.
Meiner Meinung nach hat er mit Option 1 mehr Sicherheit, da der User bei Option 2 das Format des PDF (Print/EMail/Kompatiblität) jederzeit im Druckertreiber verändern kann.

Beides ist aufwändig...

Frickler 22. Okt 2024 18:08

AW: E-Rechnung
 
P.S.: Für den Fall, dass das "alte Programm" ein DOS-Programm ist mit eigenen "Druckertreibern": es gibt auch "GhostPCL", damit kann man eine PCL Ausgabe(datei) in PDF umwandeln.

himitsu 22. Okt 2024 20:02

AW: E-Rechnung
 
PS: In einen 64 Bit Windows läuft kein DOS-Programm mehr. (das 16 Bit-Subsystem fehlt)

Olli73 22. Okt 2024 20:41

AW: E-Rechnung
 
Es wird doch bestimmt eine Datenbank verwendet?

Ich würde es dann so machen, wie im Beitrag #22 von Frickler im Nachtrag beschrieben, aber die XML-Daten nicht aus der PDF sondern aus der Datenbank erstellen.

khh 23. Okt 2024 09:05

AW: E-Rechnung
 
Zitat:

Zitat von Frickler (Beitrag 1542424)
P.S.: Für den Fall, dass das "alte Programm" ein DOS-Programm ist mit eigenen "Druckertreibern": es gibt auch "GhostPCL", damit kann man eine PCL Ausgabe(datei) in PDF umwandeln.

das alte Programm ist ein Windows-Programm

khh 23. Okt 2024 09:07

AW: E-Rechnung
 
[QUOTE=Frickler;1542417]
Zitat:

Zitat von HolgerX (Beitrag 1542414)

Warum nicht so:
1) Rechnung drucken auf einen PDF-Drucker, der einen automatischen Dateinamen vergeben kann, in einen vorgegebenen Ordner
2) Auf dem Ordner eine Ordnerüberwachung mit eigener Software
3) diese Software lauert auf neue PDFs, scannt die, holt die Infos raus, macht ne XML und hängt die an. Am Ende mit passendem Namen in passenden Ordner speichern.

die Idee ist gut, so könnte das funktionieren!

Ulf346C 23. Okt 2024 09:09

AW: E-Rechnung
 
Kann mir jemand etwas zum geforderten XML Format sagen ?
Stehe da total auf dem Schlauch

khh 23. Okt 2024 09:10

AW: E-Rechnung
 
Zitat:

Zitat von Olli73 (Beitrag 1542429)
Es wird doch bestimmt eine Datenbank verwendet?

Ich würde es dann so machen, wie im Beitrag #22 von Frickler im Nachtrag beschrieben, aber die XML-Daten nicht aus der PDF sondern aus der Datenbank erstellen.

ja gibt es, das ist auch ne Variante.

Frickler 23. Okt 2024 16:43

AW: E-Rechnung
 
Zitat:

Zitat von himitsu (Beitrag 1542426)
PS: In einen 64 Bit Windows läuft kein DOS-Programm mehr. (das 16 Bit-Subsystem fehlt)

P.P.S man nimmt dann "DOSBOX", bzw. für Windows 3.x Programme "WineVDM".

himitsu 23. Okt 2024 17:26

AW: E-Rechnung
 
In der DOSBox geht aber auch nicht alles.
Hardwarezugriffe und auch bezüglich Drucker braucht man öfters speziell angepasste DOSBOX-Varianten.

Aber im Grunde wollte ich nur freundlich darauf hinweisen, dass es besser sein mag, sowas Altes eher versuchen loszuwerden / zu ersetzen.

khh 24. Okt 2024 18:16

AW: E-Rechnung
 
Zitat:

Zitat von himitsu (Beitrag 1542479)
In der DOSBox geht aber auch nicht alles.
Hardwarezugriffe und auch bezüglich Drucker braucht man öfters speziell angepasste DOSBOX-Varianten.

Aber im Grunde wollte ich nur freundlich darauf hinweisen, dass es besser sein mag, sowas Altes eher versuchen loszuwerden / zu ersetzen.

Geht leider nicht,zum Einen ist es ein stabil laufendes Windowsprogramm, zum Andern stecken in der speziellen Branchensoftware 2 Jahre Entwicklungsarbeit drin

jziersch 26. Okt 2024 10:29

AW: E-Rechnung
 
Zitat:

Zitat von khh (Beitrag 1542318)
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.

Hast Du die E-Rechnungsdaten schon beim Ausdruck oder zumindest die erforderlichen metadaten?

Dann bietet es sich an die Metadaten wie folgt beim Ausdruck einzubetten:

1) Start und Endmarken definieren, z.b. #${{{ }}}$#
2) dazwischen kommen dann die Nutzdaten, möglichst lange Zeilen. Nur ASCII Zeichensatz, Umlaute und gewünschte Zeilenumbrüche codieren!
3) Auf der letzten Seite der Rechnung diese Daten ausdrucken und zwar mit Schrifthöhe 1 und weißer Textfarbe
4) Die Rechnung ausdrucken, z.b. mit MS PrintToPDF

In WPViewPDF PLUS kannst Du dann den Text der letzten Seite abrufen und verarbeiten, z.b. in die PDF einbetten.
Die letzte Seite kann dann gelöscht werden.

Alternativ den Text unter die erste Seite drucken. Das geht in Word mit einer Textbox die im Header platziert wird.

Ich habe beides probiert mit Word, ausgegeben mit PrintToPDF und es war mit WPViewPDF PLUS in beiden Fällen möglich die Daten zu extrahieren.
Hinweis: Bei manchen PDF Druckern könnte man auch die leerzeichen codieren, wenn sie beim Druck verloren gehen können.

Ich finde es besser die Daten auf einer zu löschenden Seite zu platzieren, da die sonst bei der Anzeige noch anwählbar sind.
Die Anzeige der PDF wird auch verlangsamt durch den vielen nicht sichtbaren aber gedruckten Text.

khh 27. Okt 2024 11:56

AW: E-Rechnung
 
Zitat:

Zitat von jziersch (Beitrag 1542615)

Hast Du die E-Rechnungsdaten schon beim Ausdruck oder zumindest die erforderlichen metadaten?

tja, die müsste ich dann wohl am Einfachsten aus der DB lesen.
Danke dir für die Idee.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz