AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wie erzeugt man heutzutage (Massen)Druckoutput?

Wie erzeugt man heutzutage (Massen)Druckoutput?

Ein Thema von delora · begonnen am 7. Jul 2016 · letzter Beitrag vom 16. Jul 2016
Antwort Antwort
Seite 4 von 5   « Erste     234 5   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#31

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 14:52
Wenn man mehrere Sprachen unterstützen will, dann legt man sich pro Sprache ein Template an. Das wird dann durch die Engine mit den Daten gefüllt und fertig.
Es handelt sich hier nicht nur um statische Texte, sondern hauptsächlich um dynamische, die aus der Datenbank kommen.
Da ist nix mit Template Diese Texte müssen zur Laufzeit übersetzt werden (also der übersetzte Text muss zur Laufzeit anstelle des Originaltextes aus der DB geladen werden).
Die statischen Texte gehören ins Template, die dynamischen sind Teil der Daten und für die Beschaffung sollte das Template nicht verantwortlich sein. Wenn die Engine die Daten mit dem Template zusammenfügt, dann muss alles soweit bereit sein, dass wirklich nur noch zusammengefügt werden muss.

Das Übersetzen der dynamischen Texte erfolgt also mindestens ein Schritt vorher.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#32

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 16:04
Um MS Office/LibreOffice würde ich einen Bogen machen: die Steuerung müsste zwangsläufig über OLE/COM erfolgen, was leider fehlerträchtig geworden ist vor allem weil bei so Sachen auch gerne mal Virenscanner unerwartet zuschlagen...
hast Du dafür Beispiele? bei uns funktioniert das eigentlich ganz gut, da gibt es keinen Ärger mit Virenscannern.

Und wenn das ganze von einem "normalen" Anwender geändert werden sollte, scheidet im Grunde alles aus, was keinen grafischen Editor hat, weil es sonst ganz bitter wird und am Ende wieder "nur" der Entwickler Änderungen machen kann.
der "normale" oder auch der "fortgeschrittene" Anwender, sind ja sehr relative Einordnungen.
Die Erfahrung lehrt leider daß Du Recht hast.

@Delora
Ich werde das Gefühl nicht los, daß Ihr vieles so macht wie Ihr es macht, weil Ihr es schon immer so gemacht habt. Vielleicht wäre es jetzt sinnvoll, falls machbar, sich zu überlegen wie man es machen würde wenn man keine Altlasten hätte. Das kostet nur etwas Zeit und etwas Papier.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.592 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 16:17
XSL-FO ist definitiv ein Blick Wert. Mittels der FO-Prozessoren können auch jede Menge Ausgabe-Varianten erzeugt werden. Würde ich Report.XY auf jeden Fall vorziehen. Zumindest war das mein Eindruck. Am Ende haben wir unsere Druck-Engine doch nochmal umgeschrieben. Aber wenn wieder die Entscheidung ansteht, ist XSL-FO wieder im Boot.
Sven Harazim
--
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#34

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 17:59
Hallo,
ich werfe mal QuickPDF in die Runde.

Hier kommt es aber auf die Komplexität der Dokumente an.

Bei List&Label hatte mir daals missfallen (Version 6-10 ...),
dass das alles sehr statisch war.
Mittlereise kan man das Teil aber auch komplett dynamisch benutzen.

Im Vergleich zu Crystal Reports war L&L ein Traum.


Heiko
Heiko
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#35

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 18:57
...Bei List&Label hatte mir damals missfallen (Version 6-10 ...),
dass das alles sehr statisch war.
Mittlereise kan man das Teil aber auch komplett dynamisch benutzen.

Im Vergleich zu Crystal Reports war L&L ein Traum.

Heiko
Ich benutze L&L seit Version 4. Mittlerweile sind wir bei Version 21. Das kann man mit den Versionen VOR Version 12 nicht mehr vergleichen. Ab Version 16 gab es dann neben den üblichen Erweiterungen dank Einsatz von Multithreading einen Performance-Schub um ca. 80%.

Was die Steuerung des Ausdrucks (und die vorher gegangene Diskussion um Templates) anbelangt. Man kann die Druckausgabe entweder automatisiert über die Datenbank (TDataSet) ablaufen lassen, oder den Ausdruck selber manuell Datensatz für Datensatz erledigen. Diese Flexibilität ist auch mir wichtig, weil beim Ausdruck manchmal (also nicht immer) Daten erst während des Ausdruckes zusammengestellt werden müssen. Beispielsweise beim Druck eines Lieferscheines oder einer Rechnung die dazugehörigen Seriennummern, das Aufmaß, oder bei Leistungspositionen die Zuordnungen.

Der grafische Formulardesigner (mit echtem Preview, also ganz anders als z.B. bei FastReport) wird mitgeliefert. Jeder der sich damit beschäftigt (auch neugierige Kunden) kann den bedienen. Man kann ihn aber auch sperren, was ich über die Benutzerverwaltung wahlweise mache.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
delora

Registriert seit: 7. Jul 2016
7 Beiträge
 
#36

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 19:38
Hallo zusammen,

ich denke, dass ich mir den List&Label mal ansehe. Die Infos auf der Homepage sind ja ganz ansprechend. Und eine 30 Tage Testversion gibt es auch (obwohl ich in dem Zeitrahmen wahrscheinlich nicht so viel reißen kann )
Und wenn das nichts ist, werde ich mir mein XSL-FO Buch nochmal herholen.

@Delora
Ich werde das Gefühl nicht los, daß Ihr vieles so macht wie Ihr es macht, weil Ihr es schon immer so gemacht habt. Vielleicht wäre es jetzt sinnvoll, falls machbar, sich zu überlegen wie man es machen würde wenn man keine Altlasten hätte. Das kostet nur etwas Zeit und etwas Papier.
Da hast Du vollkommen recht - ich habe das auch so gesagt, dass das Ganze gewachsen ist, wir uns aber davon trennen möchten - daher bin ich hier

Nochmals vielen Dank für Eure Ideen!
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.163 Beiträge
 
Delphi 11 Alexandria
 
#37

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 19:43
@hoika,
der TE spricht von Milliarden Datensätzen, da sollte Geld keine Rolle spielen und die Entscheidung IMHO für die größten Hersteller in diesem Bereich gefällt werden (SAP (Crystal Report) usw.).
Wir nutzen (noch) Crystal Report, mich würde mal die Aussage interessieren, was an L&L besser ist wie bei Crystal Report. Das hört sich interessant an! Ich hatte vor längerer Zeit auch mal L&L getestet, konnte damals (Version 14?) keine so großen Vorteile erkennen um CR zu ersetzen.
Im Vergleich zu Crystal Reports war L&L ein Traum.Heiko
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.003 Beiträge
 
Delphi 2009 Professional
 
#38

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 8. Jul 2016, 20:18
Anstelle Template zu verwenden die manuell erstellt sind, könnte man versuchen das gesamte Layout dynamisch zu erzeugen. Das geht bei einigen mir bekannten Reportgeneratoren entweder indem man die Reportdefinitionsdatei per Code erzeugt, oder über ein Layout-API.
Dann würde man nur noch ein Programm benötigen, das über diese API die gewünschten Variationen der Reportlayouts erzeugt.

Mit diesem Programm würde man den Report dann aus Bausteinen zusammensetzen, die speziell dem geschäftlichen Feld angepasst sind.

Das Zusammenbauen kann hart kodiert im Code ablaufen:

Code:
Quartalsabrechnung := TQAbrechnung.Create;
Quartalsabrechnung.AddInfoBlock(...);
Quartalsabrechnung.AddWerbungsBlock(...);
QuartalsabrechnungLayout := Quartalsabrechnung.ErstelleLayout;
LayoutRepository.AddLayout(REPORT_QA, QuartalsabrechnungLayout);
An das generierte Layout werden dann alle Datensätze übergeben.

Code:
ReportGenerator := TRG.Create;
ReportGenerator.Layout := LayoutRepository.LoadLayout(REPORT_QA);
ReportGenerator.LoadDataSet(...);
ReportGenerator.CreateReport;
...

Manuelle Nachbearbeitung der generierten Layouts sollte dann nicht mehr stattfinden.


p.s. Auf jeden Fall würde ich vermeiden, zur Laufzeit des Reportgenerators noch Code mit Datenbankzugriff auszuführen. Eine Funktion, die innerhalb des Ausdrucks noch Lookupfelder in der Datenbank nachschlägt wäre ein No-Go. Für die saubere Trennung wäre es zum Beispiel möglich, die Daten als XML Dokument bereitzustellen.
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#39

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 9. Jul 2016, 15:01
Hi,

ich weiß nicht ob ich hier etwas sinnvolles zu beitragen kann, aber bevor ich es verschweige, teile ich mal unsere Lösung mit.

Ich bin in der Webentwicklung bei einem Reiseunternehmen tätig, wo wir natürlich auch einige Dokumente wie beispielsweise Rechnungen drucken müssen.

Wir verwenden Python im Backend. Mit unserem Python Framework benutzen wir auch eine Templating Engine für Python. Mit dieser können wir nicht nur HTML generieren, sondern auch LaTeX Dateien. Mit Schleifen und If-Abfragen sind wir so recht mächtig in der Generierung der LaTeX-Quelldateien. Mittels selbst definierten Dokumenttypen und LaTeX-Befehlen ist das Generieren daher auch recht einfach.

Änderungen an den Templates waren oft schwierig, meist aber nur, weil das System über seine ursprünglichen Grenzen gewachsen ist und wir keinen LaTeX-Profi im Team haben. Bei einer eventuellen Neuentwicklung würde ich den Weg über LaTeX allerdings erneut gehen. Diesmal mit mehr Augenmerk auf Modularität, Unicode (!!!) und einfacheres Debugging.

LaTeX Generierung ist nach meinem Empfinden alles andere als rasend schnell. Ich weiß aber auch nicht von welchen Maßstäben wir reden. Weiterhin umfasst unser Volumen nur wenige Dokumente pro Tag. Allerdings lässt sich diese Technik denke ich problemlos vertikal und horizontal skalieren.
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#40

AW: Wie erzeugt man heutzutage (Massen)Druckoutput?

  Alt 11. Jul 2016, 09:38
@hoika,
der TE spricht von Milliarden Datensätzen, da sollte Geld keine Rolle spielen und die Entscheidung IMHO für die größten Hersteller in diesem Bereich gefällt werden (SAP (Crystal Report) usw.).
Wir nutzen (noch) Crystal Report, mich würde mal die Aussage interessieren, was an L&L besser ist wie bei Crystal Report. Das hört sich interessant an! Ich hatte vor längerer Zeit auch mal L&L getestet, konnte damals (Version 14?) keine so großen Vorteile erkennen um CR zu ersetzen.
Im Vergleich zu Crystal Reports war L&L ein Traum.Heiko
Das Problem ist ja, wenn man sich mal auf eine Lösung eingeschossen hat, ist ein Wechsel sehr zeitaufwändig. Nicht nur wegen der Programmierung, sondern auch wegen der Neugestaltung der Formulare bei den Kunden. Und darum ist man natürlich erst mal skeptisch. Das ist normal.

Unsere erste Lösung war damals auch CR. Ist schon eine ganze Weile her (wie schon gesagt, seit L&L Version 4) und mit Sicherheit kein Vergleich mehr mit heutigem Stand. Was mich damals letztendlich überzeugt und den Ausschlag für den Wechsel gegeben hat, war die Performance und die Flexibilität. Wenn ich will, kann ich den kompletten Ausdruck mit einer eigenen Druckschleife generieren. Ich muss dann zwar alle Variablen und Felder selber erzeugen. Das ist die Grundlage für die Flexibilität, aber, ein einmaliger Programmier-Vorgang. Ich habe Druckschleifen die laufen schon jahrelang ohne jegliche Änderung, denn wenn der Kunde etwas ändern/ergänzen möchte, neue Berechnungen braucht usw. dann passiert das alles im Formular-Designer.

Ein Nachteil von L&L könnte sein, dass man roundabout 20 Dateien (dll's) mitliefern muss. Bisher hatte ich aber damit kein Problem.
Gruss Otto
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz