Best Practise: Dokumente als Ausgabe generieren

  • Hi ihrs.

    Ich stand nun schon öfter in Projekten vor der Aufgabe, eine halbwegs formschöne Ausgabe zu generieren.
    Um mal ein Beispiel zu nennen, das das Anliegen verdeutlicht: Ich habe vor längerem ein kleines Warenwirtschaftssystem programmiert, mit Auftragsverwaltung usw... Dazu gehört natürlich auch, dass ein Rechnungsdokument für den Kunden generiert wird. Im Idealfall sollte das durch eine Vorlagen-Datei geschehen, in der nur Werte ergänzt werden. Wie geht man das jetzt am besten an? Das möchte ich hier diskutieren.

    Ich greife schon mal ein paar Ideen vor, um ein Statement dazu abzugeben:

    • Pure Textdateien (*.txt)
      Einfach umzusetzen, funktioniert mit eigentlich jedem Setup... Ist allerdings eher in den späten 80ern anzusiedeln. Schön und professionell ist anders.
    • Word-UDF
      Geht im Prinzip, allerdings setzt das eine Word-Installation voraus. Würde bei meinen persönlichen Setups daher schon ausfallen, da ich nur LibreOffice verwende.
    • PDF-UDF
      PDF ist eigentlich genau das richtige Format. Allerdings ist die bekannteste PDF-UDF eher... Umständlich. Eine Rechnungsvorlage, die nur durch die bestellten Produkte ergänzt wird, ist so nicht möglich.

    Ich hoffe auf eine fröhliche Diskussion und ein paar Erfahrungswerte von euch. :)

  • Im Prinzip bräuchtest du einen PDF-Processor welcher aus einer Quelltextdatei die PDF bastelt.
    Die Quelltextdatei wäre deine Vorlage worin du deine Eintragungen ergänzt oder ersetzt.

    LaTeX (pdflatex,xelatex,lualatex) wäre wohl das bekannteste Beispiel hierfür.
    Für deinen Fall aber wohl schon allein aufgrund der mitzuliefernden Distributionsgröße ungeeignet.
    Alternativen hierzu wären aber vielleicht ein Markdown to PDF-Converter oder groff.
    Sicherlich würde es auch dazu noch einige Alternativen geben.
    Im Grunde denke ich, das sowas eher geeignet ist als eine reine PDF-UDF bei der du die Erstellung allein im AutoIt-Skript abhandeln musst.

  • Hallo chesstiger.

    Wir haben auf Arbeit ein Programm, mit dem wir ausfüllbare PDF Dateien erstellen können. Also die Felder sind dann ausfüllbar, ein Button zum "Senden via Mail" und ein "Drucken" Button kann man genauso einfügen. Wenn Du ein festes Dokument hast und es ausfüllbar haben möchtest, kann ich es Dir gerne erstellen. Ich kann ja den Feldern auch Namen geben, die dann ectl. ja mit einem Script auch ausfüllbar sind. Habe das noch nicht versucht, da ich bei PDF und AutoIt noch nicht reingeschaut habe.

    Das Programm ist das was Adobe direkt mitgelieferet hat.

    Bei Bedarf schreib mich mal an.


    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • @Aspirin Ein Markdown2PDF-Programm hört sich schon recht gut an. Wobei da die Platzierung eines Firmenlogos bspw. auch schwer fallen dürfte... Oder ist Markdown da schon weiter, als ich weiß? LaTeX ist natürlich eine Kanone, gerichtet auf einen Spatzen...

    @Alina Das ist nett von dir, aber hier geht es eigentlich weniger um ein unmittelbares Problem, sondern eher um eine allgemeingültige Lösung. Die Felder einfach auszufüllen könnte allerdings klappen, sofern man per AutoIt darauf zugreifen kann. Ich lese mich da mal rein und melde mich sonst nochmal. Danke. ;)

    @Kanashius PDF hat nur die Eigenschaft, immer gleich auszusehen, wo auch immer du es öffnest. Noch dazu hat man beim Gestalten von PDF-Dokumenten extrem viele Freiheiten. Das ist natürlich ein immenser Vorteil.
    Bei einem reinen Textdokument (*.txt) fehlt einfach zu viel. Ich könnte ja noch nicht mal ein Firmenlogo einbinden, geschweige denn Tabellenränder o.Ä...
    An RTF habe ich auch schon überlegt. Allerdings ist für mich die schlechte Handhabung von PDFs kein Grund dagegen. In den meisten Fällen, in denen ich so ein System brauche, wird das Dokument unmittelbar danach gedruckt. Und dann interessiert die digitale Variante niemanden mehr. :D

  • Nimm RTF. Jedes System (Windows, OSX, Unix, Google Docs etc.) unterstützt es, man kann es (gerade aus AutoIt heraus) einfach exportieren und Unterstützung für Logos, Tabellen und was weiß ich hat es auch. Zudem lassen sich RTFs auch wunderbar in PDFs konvertieren, sollte das nötig sein.

  • chesstiger wir nutzen PDF Dateien sehr viel für Mandanten wenn sie etwas VOLLSTÄNDIG ausfüllen und dann ausdrucken oder senden sollen. Ist nicht alles ausgefüllt, ist ein senden halt nicht möglich. Oder wenn uns bei Formblättern Daten fehlen, dann füllen wir die soweit aus, wie es uns möglich ist, schützen dann die betreffenden Felder gegen überschreiben und senden sie dann zum vollständigen ausfüllen zu. Aber auch viele Formblätter stehen bei uns als PDF Datei zur Verfügung, die wir täglich mehrmals ausfüllen müssen. Ich zum Beispiel fülle doch nicht jedes mal einen Reiseantrag komplett neu aus. Einfach eine PDF mit den Grunddaten ersten und dann immer nur das nachtragen, was jedes mal anders ist (Reisezeiten, Kosten, Mietwagen, usw.). Könnte man sicherlich auch anders lösen, aber da wir ja auch länderübergreifend arbeiten und auch nicht überall die gleichen Softwarepakete installiert werden, ist für uns PDF eine gute Lösung. Zum Teil sind es aber auch Erleichterungen, wenn man sieht, das man mit etwas Hintergrundwissen auch Berechnungen ausführen lassen kann. Da weiß ich aber nicht, ob es grundsätzlich mit dem Acrobat Writer geht. Wir haben "Adobe Acrobat Prof." und ob der Writer nun zu dem Paket gehörte oder nicht weis ich nicht. Genauso weiß ich derzeitig nicht, ob die Tool wie "Berechnen von Feldinhalten" dabei ist oder irgendwann mal dazu gekauft wurde. Ich lasse die PDF Dateien lieber von Finn machen, der ist da fit drinne seit Jahren und kann damit irgendwie zaubern. Aber mal ehrlich, privat braucht man solche Software, die ja DKK 4350,- ( ca.€ 590,-) kostet nun wirklich nicht, oder? Aber gibt es vergleichbare Software eigentlich günstiger? Würde mich mal interessieren.

    Kanashius ich bin auch eine Liebhaberin der guten alten Textdatei (*.txt), aber das eher für privatere Sachen. Was aber Tabellen und PDF an geht, da gebe ich Dir völlig recht. Bei usn wird es so gehabt, das u. a. Tabellen die in einer PDF sind als Anlage entweder beigefügt werden oder z. B. im Mandantenzugang zur Verfügung steht.


    Ich meine, das jede Dateiendung die angesprochen wir noch irgendwo ihre Verwendung findet und wie im wahren Leben, ist es von Person zu Person so, das der Geschmack entscheidet, wenn man denn die Wahl hat. In dem Sinne: Morgen ist irgendwann auch Wochenende. Normalerweise ist es zumindest geplant. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (14. Januar 2016 um 09:58)

  • @Alina ich denke primär ging es chesstiger nicht darum eine PDF zu erstellen bzw. eine ausfüllbare PDF zu haben, sondern diese zu generieren.
    Ihr redet aneinander vorbei.

    @chestiger mit LaTeX schießt du nicht mit Kanonen nach Spatzen, LaTeX scheint mir sogar die optimalste Lösung, wenn du es rein als plain-Text haben willst, der dann schön wird.
    Sicher, LaTeX ist mächtig, allerdings kümmert sich LaTeX auch um all deine Formatierungsprobleme die auftreten könnten. Würde dir empfehlen die Vorlagen in LaTeX zu schreiben und dann einfach mit einem Interpreter in eine PDF rausgeben lassen, nachdem du die Werte die ersetzt werden sollen ersetzt hast.
    Prinzipiell auch weil PDF das Universalformat ist, das bei jedem Endverbraucher abgerufen werden kann.
    Wer keinen PDF Viewer besitzt, der ruft die PDF einfach im Web auf.

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Also ich bin absoluter PDF Fan. Ich benütze das kostenfreie PDF Toolkit. Da kann man z.B. PDFs übereinanderlegen mit verschiedenen Optionen (transparen oder deckend) usw- Goggle das mal - wenn Du nichtfündig wirst kann ich helfen.

    Also z.B. eine Ausgabe als Text erstellen mit allen Angaben die man so braucht. RE-Nummer, Datum, Artikel, betrag usw. Als PDF drucken und dann das Master PDF darüberstempeln.

    Eine Formatierte Druckausgabe Deiner Daten würd ich im Zweifel als *.prn File andenken. Druckbefele integrieren - fertig.

    Ich habe damit ziemlich viele Anwendungen am laufen. Funtioniert gut kostet nix.

    Andere Variane:
    Maxxx PDF Drucker - ist ein deutsches Produkt gibt es glaube ich als Freeware und als bezahlversion. Ist ein PDF drucker mit der Möglichkeit "Briefpapier" über den Ausdruck zu legen. Vom Prinzip nichts anders als oben beschrieben aber mit GUI und ziemlich einfach zu bedienen.


    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Wie wäre es, HTML auszugeben?
    Wenn man die meisten Formatierungen in eine CSS auslagert, dann ist der Aufbau der HTML betont einfach und das Generieren des Formulars ist mit ein paar simplen String-Befehlen erschlagen.
    Einfach die sich gelegentlich ändernden Werte per Stringmanipulation einflechten und gut.

    Ein Web-Browser ist garantiert überall vorhanden und ins Formular könnte man sogar noch Späße wie einen "Senden"-Button einbauen. Also falls man dem Kunden eine papierlose Rechnung zukommen lassen möchte, deren Erhalt er dann direkt bestätigt etc. etc.

    Ich programmiere ja derzeit an meiner Reparaturauftragsverwaltung, aus der ich später auch Rechnungen drucken will; schließlich sind da bereits alle notwendigen Daten erfasst!
    Hoffe, bald endlich mein verhasstes Lexware kicken zu können!
    Dazu hatte ich die HTML-Ausgabe ins Auge gefasst. Simpel zu erzeugen und ausreichend Gestaltungsmöglichkeiten.

    Die CSS kann man dann schön komfortabel mit einem dafür vorgesehenen WYSIWYG-Programm verändern, ohne endlos in Quelltexten herumparametrieren zu müssen, bis alles halbwegs so aussieht, wie es soll.

    Ich code, also bin ich!

  • Habe inzwischen mal nach geeigneten HTML/CSS-Vorlagen für die Rechnungserstellung recherchiert und stieß dabei auf "ZugFeRD".

    Fazit: DAS ist es.
    Hier ein paar Links zum Einlesen:

    http://www.golem.de/news/pdf-und-x…406-107463.html

    http://www.flowmanager.eu/aus-der-praxis…earbeitung.html

    https://de.wikipedia.org/wiki/ZUGFeRD

    Bei dem Wiki-Artikel beachte man den ersten Link in den Einzelnachweisen. Das ausführliche PDF erklärt auf 132 Seiten neben dem Datenformat noch allerlei weitere Aspekte, die bei der Anwendung zu beachten sind.

    Ich code, also bin ich!

  • Und weil es bei chesstigers Fragestellung ja nicht ausschließlich um Rechnungen ging, will ich noch eine weitere (wenn auch leicht beknackte) Idee zumindest mal in den Raum werfen:

    Man programmiere in AutoIt - zusätzlich zu der Maske, in der die Daten eingepflegt werden - noch eine weitere GUI, in die am Ende die Daten WYSIWYG-mäßig einfließen.
    Und von der wird dann automatisch ein Screenshot erstellt!

    Die GUI für die Datenausgabe sollte möglich größer sein, als der eigene Bildschirm. Folglich muss der Screenshot mit raffinierteren Methoden erfolgen, als als dem "Abfotografieren" des sichtbaren Bereichs, denn die GUI ist ja größer.
    Warum größer?
    - Na, damit man später mit guter Qualität ins Bild zoomen kann.

    Damit ist der fette Nachteil bereits erwähnt: Die so erzeugten Dateien werden groß.
    Aber insbesondere wenn es vorrangig um die Erzeugung von Papierdokumenten geht, wäre dieser Weg absolut brauchbar. Das erzeugte Bild wird dabei nur temporär erzeugt, um es direkt auszudrucken. Danach wird es automatisch gelöscht; es kann bei Bedarf ja per Knopfdruck jederzeit neu erzeugt werden.

    Vorteil dieser etwas schrägen Methode: Die Erzeugung des Dokuments ist besonders einfach. Man muss sich nicht mit HTML/CSS, oder PDF, oder sonstigen Dateiformaten herumplagen; sondern man wendet nix als AutoIt an!
    Das erzeugte Datenformat sieht auch in elektronischer Form (also nicht nur auf Papier) garantiert überall gleich aus; was mit anderen Formaten (insbesondere HTML/CSS) doch eher schwierig zu gewährleisten ist.
    Außerdem müssen keine Fremdprodukte installiert werden, wie der von Peter S. Taler erwähnte, virtuelle PDF-Druckerteiber.

    Im Grunde tut Windows beim Drucken nicht viel anderes. In der guten, alten Zeit wurde noch simples ASCII zum Drucker geschickt. Doch heutzutage erzeugt praktisch jeder Druckertreiber sogar für Textdokumente eine Grafik, die dann zum Drucker gespoolt wird.


    Fazit:

    • Für Rechnungen dürfte ZugFeRD wirklich das Mittel der Wahl sein.
    • Und die simple HTML-Ausgabe hat heutzutage natürlich ebenfalls ihren unbestreitbaren Nutzen.
    • Aber für Papierdokumente, oder echtes WYSIWYG (bei jedem Endbetrachter), kommt die wie beschrieben programmierte Grafik ins Spiel.

    Ich code, also bin ich!

  • Moin,
    ich habe es mit einer anderen "schrägen" Methode realisiert. Mit Hilfe von OpenOffice. Die ODT-Dateien sind ZIP-Dateien. Man kann sie entpacken und packen.
    Dafür habe ich eine Vorlage in OpenOffive-Writer erstellt und in der Content.xml Text eingefügt den ich suchen und ersetzen kann z.B. #Name#, #PLZ# usw..
    In AutoIt habe ich einen Maske programmiert in der ich Daten wie Adresse, Artikelnummer usw. eingeben kann. Dann entpacke ich die Vorlage (*.odt) mit 7zip in ein temopäres Verzeichnis und ersetze in der Content.xml #Name# mit dem Namen aus meiner Maske. Wenn alle Daten erstetzt wurden dann packe ich das Verzeichnis wieder mit der Dateiendung ODT. Jetzt kann die neue Datei mit OpenOffice geöffnet werden.
    Als OpenOffice nutze ich eine ältere Version die als Portable Version hier habe. Mit den aktuellen Versionen von OpenOffice oder LibreOffice habe ich es noch nicht probiert.

    Ich habe das hier gerade gefunden, könnte dir helfen:
    [UDF] OpenDocumentFormat, ODT, OpenOffice, LibreOffice

    Viele Grüsse
    HeiWoMa

    Einmal editiert, zuletzt von HeiWoMa (16. November 2016 um 15:47)