pdf-writer

Hallo Community,
mich würde es einmal interessieren, welche aktuellen und gängigen techniken zum Einsatz kommen, um XML Daten (Textbausteine) in eine vorgegeben grafische Ausgabe konvertieren zu können.

Ganz einfach formuliert:
1. XML Daten auswerten und auslesen
2. Daten/Text unter Einhaltung der grafischen Vorgabe (z.B. Hintergrundfarbe, Tabelle, Border oder Schriftgröße) visuell aufbereiten
3. die aufbereiteten Daten das PDF Format überführen

Gezielt gefragt würde mich die "best practise" interessieren, wobei ich am Besten nicht von "third parties" abhängig sein möchte.
Begründung - manchmal ist es etwas schwierig "third parties" selber zu supporten bzw. auf den support von dritten zu warten (Beispiel DOMPDF - klasse library, jedoch to much overhead). Des weiteren sollte die Technik auch Bestand haben, was eine zukunftsorientierte Planbarkeit möglich macht. Kein einfacher Hype, welcher in 18 Monaten wieder komplett out ist.

Meine Vorstellung wäre hier C++, jedoch müsste ich die Sprache komplett neu erlernen, was mich etwas abschreckt aber nicht abhalten würde. Vorteil wäre für mich die Geschwindigkeit und die Nähe zur Hardware, denn die PDF Dokumente können auch schon mal 2-3 GB einnhemen... Ich selber komme aus der oldschool JAVA Ecke (Java wird aber nicht gewünscht) und bin nun aber seit > 10 Jahre in der Entwiclung von PHP(OOP) und Javascript (OOP) zuhause.

Vielleicht hat jemand Ideen oder Ansätze - mfg
 

Chakky

Member of Honour
Huhu Bytesurfer,
ich hab mal für ein kleines CMS an der Uni ein Addon geschrieben um viele PDF-Dateien per PHP zu generieren. Dafür kam zu Einsatz FPDF (http://www.fpdf.org/). Die Inhalte der Dateien kamen einmal aus einer PDF selbst, die als Vorlage diente und dann Textdateien (meist csv) oder direkt aus einer Datenbank (diese wurde wiederum per XML gefüttert). Das war nicht wirklich sehr performant (20 PDFs mit 4 Seiten + Graphiken, dauerten zwischen 3 und 5 Minuten) aber immer noch schneller als der Word Serienbrief.

Ich glaube du solltest erstmal schauen was die Anforderung wirklich ist? XML zu interpretieren ist kein Hexenwerk (sofern man immer die gleichen Strukturen erwartet), problematisch ist eher das PDF daraus zu erstellen. Ich kenne keine Möglichkeit ohne Thirdparty-Lib. Evtl könntest du zumindestens unter Windows "Microsoft Print to PDF" nutzen. Da kannst ja jedes beliebiges Dokument reinschicken und erstellt dir ein PDF.
 

Chromatin

Moderator
Mitarbeiter
Deine Frage ist zu wenig spezifisch. XML ist ja erstmal nur das Format von Daten. Du musst (Gott sei Dank) heutzutage keine Parser mehr für XML selbst bauen aber du musst das Zeug einlesen und die Inhalte in deinem Programm verfügbar machen. Ich würde dir raten diesen Teil als separate Software zu entwickeln. PDFs direkt zu schreiben ist heutzutage keine wilde Sache mehr. Es gibt für jede brauchbare Sprache stabile Bibliotheken.

So oder so musst du dein Ausgabedokument erstellen. Entweder du machst das im Rahmen einer PDF Lib. Eine andere einfache Möglichkeit ist dass du dir ein Template in HTML erstellst und das mit deinen Daten fütterst (Template Systeme gibt es auch für nahezu jede Skriptsprache).
Das fertige html Dokument wandelst du dann in PDF (z.B. https://pdfcrowd.com/). Das ist einfach und du musst dich nicht um das Paging kümmern, was für mich immer die lästigste Angelegenheit ist, wenn man PDF raw erstellt.

Wenn du kein guter C++ Coder bist, dann lass die Finger davon es in C++ zu machen. Wenn man keine Systemprogrammierung betreibt, nimmt man für überschaubare Projekte Perl/Raku/Lua/VB/Python/PHP/Ruby oder ähnliches. Ansonsten C# und vielleicht Java.
 

bitmuncher

Moderator
Bezüglich C++ kann ich Chromatin nur zustimmen. Lass die Finger davon. Zur Datenverarbeitung ist das zu sehr low level. Sprachen wie Python, Perl, JS oder auch Go sind für Datenverarbeitung wesentlich besser geeignet und mature enough um damit zukunftsfähige Projekte zu entwickeln. Außerdem solltest du schauen, um was für Daten es sich handelt und danach die Sprache wählen, die du verwenden willst. Für mathematische Daten (Statistik usw.) ist Python recht gut geeignet. Mit Strings kann eine Regexp-starke Sprache wie Perl recht gut umgehen. Allerdings sollte man in die Überlegung auch einbeziehen, inwiefern sich Entwickler finden lassen, die diese Sprache beherrschen. Ich mache gerade die Erfahrung, dass junge Entwickler kaum noch Perl nutzen/können, sondern eher Node.js u.ä.. Von daher ist es schwierig für die Zukunft zu planen. Du kannst maximal schauen, welche Sprachen aktuell viel genutzt werden und hoffen, dass diese auch in Zukunft Bestand haben werden. Perl-Coder wirst du unter dem Entwickler-Nachwuchs heute kaum noch finden. Vor 15 Jahren hingegen war es DIE Sprache für Systemadministratoren. Heute nutzen diese jedoch eher Python und Go. Dennoch wirst du unter älteren Entwicklern auch heute noch genug Leute finden, die Perl beherrschen und entsprechenden Code weiterentwickeln können. Daher solltest du bei der Zukunftsfähigkeit der verwendeten Sprache einfach schauen, ob es aktuell ausreichend Entwickler gibt, die diese Sprache beherrschen. Meine Empfehlung würde aktuell eher in Richtung Python und Go gehen, wenn es um Datenverarbeitung und Zukunftsfähigkeit geht.
 
Oben