Die Ausführungen der
vorherigen Seiten über Programmfenster werden hier weitergeführt. Mit imagemagick kann man dies elegant erledigen. Aber es gibt einen Stolperstein: Durch eine Sicherheitsrichtlinie wird imagemagick zunächst kein Einlesen und Bearbeiten von PDFs erlaubt. Man vergleiche https://imagemagick.org/script/security-policy.php Es wurde folgender Weg gewählt: Zunächst wird in den eigenen Dateien ein neuer Ordner erstellt |
mkdir -p ~/.config/ImageMagick/ |
Nun kann man die Sicherheitsrichtlinie aus dem Systembereich in diesen neuen Ordner im HOME-Bereich kopieren |
cp /etc/ImageMagick-6/policy.xml /home/$USER/.config/ImageMagick/policy.xml |
Man ändert bei der Datei im HOME-Bereich die Zugriffsrechte |
Durch ändern der Sicherheitsrichtlinie policy.xml im HOME-Bereich
kann man die Bearbeitung von PDFs erlauben - dies soll aber im folgenden
script nur für wenige Sekundenbruchteile erlaubt werden. Dann wird die
policy.xml wieder in den ursprünglichen Zustand zurückgeschrieben.
Der Schutz durch die Sicherheitsrichtlinie bleibt danach weiterhin
erhalten. Das script wird wieder in dem Ordner ~/Bla abgelegt. |
nano ~/Bla/Bild-in-PDF.sh |
Eingabe in den Editor: |
#!/bin/bash szA=$(yad --file --multiple --geometry=800x500+100+50 --separator="|" --file-filter='*.gif *.jpg *.png' ) if grep -q " " <<< "$szA"; then zenity --info --width="280" --title="Fehler" --text "Es gibt mindestens ein \n\n Leerzeichen. \n\nDies ist nicht erlaubt"; exit; fi szB=$(sed 's#|# #g' <<< $szA) sed -i 's#policy domain="coder" rights="none" pattern="PDF"#policy domain="coder" rights="read|write" pattern="PDF"#g' /home/$USER/.config/ImageMagick/policy.xml szD=$(date +"%d.%m.%y-%H-%M-%S") convert $szB /home/$USER/$szD.pdf sed -i 's#policy domain="coder" rights="read|write" pattern="PDF"#policy domain="coder" rights="none" pattern="PDF"#g' /home/$USER/.config/ImageMagick/policy.xml |
Nun muß man diese Datei ausführbar machen (also in ein Programm verwandeln): |
chmod +x ~/Bla/Bild-in-PDF.sh |
Das script ruft zuerst ein Datei-Auswahlfenster auf das auf die
Bildformate gif jpg png eingeschränkt wird - andere Bildformate können
hinzugefügt werden. Für die Bearbeitung durch imagemagick sind Leerzeichen im Dateinamen oder in einem Ordner zu vermeiden - daher wird im nächsten Schritt geprüft ob Leerzeichen vorliegen. Dann wird die Sicherheitsrichtlinie policy.xml für die Bearbeitung der PDF freigeschaltet. Dann kann imagemagick gestartet werden. Danach wird die Sicherheitsrichtlinie policy.xml wieder in den ursprünglichen Zustand zurückgesetzt. |
Es gibt ein Programm pdfarranger das mit erstellten PDFs arbeiten kann. Bei der Installation über synaptic werden weitere Pakete installiert: |
Dieses Programm zeigt die Seiten innerhalb des PDF mit Vorschaubildern an
und ermöglicht eine Bearbeitung, z.B. markieren einer Seite und Drücken der Entfernen-Taste löscht die Seite Seiten können an andere Stellen verschoben werden Seiten aus verschiedenen PDF können in einem Fenster bearbeitet werden und als neues Sammel-PDF abgespeichert werden. |
Eine Seite des Formulares, hier S1.jpg genannt hatte 685kB und das mit Bild-in-PDF.sh erzeugte PDF hatte auch diese Grösse. Es stellt sich die Frage ob die Grösse des PDF verkleinert werden kann. Da es sich um fotografierten Text handelt gibt es nicht viele Farben im Bild und es ist eine Verkleinerung der Farbanzahl des Ausgangsbildes möglich: |
convert S1.jpg -colors 16 S1kleiner.png |
Das mit dem Bild S1kleiner.png mittels Bild-in-PDF.sh erzeugte PDF hatte die Grösse 290kB. |