=====Oracle Linux 8 - Über die Konsole PDF Dokumente erstellen===== **Aufgabe** Für ein Dokumenten-Management System mit vertraulichen Dokumenten muss für die Entwicklungsumgebung eine größere Anzahl an "leeren" Test Dokumenten erzeugt werden. In den Test Dokumente soll aber einige Stammdaten Information stehen, um hier "echte" Tests durchführen zu können und zu erkennen ob auch das richtige Dokument angezogen wird. **Umgebung:** Das System läuft unter Linux, das heißt auch die PDF Dokument sollen mit, möglichst im Standard verfügbarer, Software unter Linux erzeugt werden. Da die gehostete Umgebung das Internet nicht erreicht, sind Python Lösungen wie https://rst2pdf.org/ oft nur schwer umsetzbar, da die notwendigen Libraries nicht so ohne weiters einfach heruntergeladen werden können und die Python Version oft zu alt ist und nur schwer über normale Wartungsverträge geändert werden kann. D.h. es bleibt nur das übrig was sich im Oracle Linux Standard auch über einen normalen Support Request installieren lässt ohne allzu viele Regularien zu sprengen. Folgende Möglichkeiten wurden dazu untersucht: - ImageMagick convert * "convert TEXT:/file.txt /file.pdf" * Wandelt den Text in ein Bild und dann in PDF um, sehr unscharf - AsciiDoc - https://asciidoc.org/ * Schön formatierte Dokumente möglich * Sehr viele (>>300) Pakete müssen installiert werden * Nicht im Distributionsstandard von Oracle Linux * (dnf config-manager --set-enabled ol8_codeready_builder ; dnf install asciidoc ; dnf install dblatex ) * Komplex und fehleranfällig, PDF konnte am Ende nicht erzeugt werden, Fehler unklar, zu viele Abhängikeiten - VIM und ps2pdf aus dem Gostscript Packet * Hat auf Anhieb funktioniert * Pakete im Standard (ol8_appstream) enthalten * Einfach in der Anwendung ---- === Lösung mit VIM und ps2pdf ==== Wir benötigen eine Postscript Dokument und können dann mit dem Tool "ps2pdf" mit Ghostscript ein PDF erzeugen. D.h. wir müssen unser Text Dokument zuvor in PostScript wandeln, also quasi ins Filesystem ausdrucken. === Vorbereitung - Software installieren === **Als root** Es muss VIM nachinstalliert werden, die notwendige Druckfunktion scheint in der Version 8.0 im Oracle Linux Standard enthalten zu sein, das muss bei manuellen Übersetzen normalerweise aktiviert werden. (vi daher nicht ausreichend!) # Repo aktivieren bei Bedarf dnf config-manager --set-enabled ol8_appstream dnf install vim ghostscript ---- === Aus Text Datei eine PDF Datei erstellen === Text Datei erzeugen und per "Hardcopy" Befehl als PostScript Datei den Inhalt speichern: #Dokument anlegen vim dokument.txt Dies sind die Daten für diese Datei ----- Gruppe Attribut Inhalt ----- :w :hardcopy > dokument.ps :q Gedrucktes Dokument in PDF um wandeln: ps2pdf dokument.ps # es wird aus einer 81 Byte Text Datei eine 8.6K pdf Datei erzeugt: ls -lah dokument.* -rw-r--r-- 1 root root 8.6K May 18 11:50 dokument.pdf -rw-r--r-- 1 root root 5.9K May 18 11:48 dokument.ps -rw-r--r-- 1 root root 81 May 18 11:46 dokument.txt Alles in einer Zeile: vim dokument.txt -c "hardcopy > dokument2.ps | q" ; ps2pdf dokument2.ps Titel in dem "Ausdruck" setzen mit **let &printheader =" "** vim dokument.txt -c "let &printheader = \"Titel des Dokuments \" | hardcopy > dokument4.ps | q" ---- ==== Über die Datenbank die Generierung steuern ==== Im nächsten Schritt wird über Datenbank Directory Objekt mit Execute Rechte und dem External Table Feature das Erzeugen der Dateien aus der Datenbank heraus mit PL/SQL implementiert. Eine Script gesteuerte External Table dient dazu als Datei Generater im Betriebssystem. => [[dba:oracle_external_table_execute_script|Eine Oracle External Table zum Aufruf von Linux Befehlen ge(miss)brauchen]] ---- ==== PDF komprimieren ==== gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dBATCH -dColorImageResolution=150 -sOutputFile=dokument5.pdf dokument4.pdf Kann hilfreich sein, bei mir aber nur wenige Byte besser bei den kleinen Dokumenten. siehe => https://opensource.com/article/20/8/reduce-pdf ---- ==== Preview Image erzeugen ==== Von der ersten Seite des PDF ein Preview erzeugen convert -density 150 presentation.pdf[0] -quality 90 test.jpg Siehe dazu auch => https://jdhao.github.io/2019/11/20/convert_pdf_to_image_imagemagick/ ---- ==== Quellen ==== Linux: * https://vi.stackexchange.com/questions/15174/make-hardcopy-without-a-header * https://www.networkworld.com/article/3609508/creating-and-merging-pdfs-on-linux.html * https://www.baeldung.com/linux/convert-text-to-pdf * https://unix.stackexchange.com/questions/17406/how-to-convert-txt-to-pdf * https://pdf.wondershare.com/jpg/linux-jpg-to-pdf.html * https://www.linux-magazin.de/ausgaben/2009/07/pdf-nach-mass/4/ Python Lösung * https://rst2pdf.org/ Oracle DB: * https://technology.amis.nl/amis/generating-a-pdf-document-with-some-plsql-as_pdf_mini-as_pdf3/