staging.inyokaproject.org

PDF komprimieren mit Stapelverarbeitung

Status: Ungelöst | Ubuntu-Version: Kubuntu 20.04 (Focal Fossa)
Antworten |

XuKuBu

Anmeldungsdatum:
22. September 2015

Beiträge: 316

Hallo

vermutlich haben viele das Problem, dass sie zwar Nautilus (Files) installieren (und vielleicht wie ich von der Herstellerseite das Skript für das Komprimieren runterladen müssen):

Nautilus/Skripte/PDF-Komprimierung

Weil ich regelmäßig über 10 PDFs komprimiere und die Stapelverarbeitung wohl nicht existiert, habe ich mir nun dieses aufgeführte Kommando angesehen:

ps2pdf -dPDFSETTING=/ebook in.pdf out.pdf 

(Funktioniert anscheinend in 19.10 nicht.)

Ob sich damit die Stapelverarbeitung bewerkstelligen lässt? Ja, die Dateinamen müssen aber ohne Leerzeichen sein. Also muss ich die Dateien in einen eigenen Ordner kopieren, mit "Umbenennen" auf aufsteigende Zahlen ändern und die nötigen Zeilen aus diesem Kommando entnehmen:

ps2pdf -dPDFSETTING=/ebook 1.pdf a.pdf
ps2pdf -dPDFSETTING=/ebook 2.pdf b.pdf
ps2pdf -dPDFSETTING=/ebook 3.pdf c.pdf
ps2pdf -dPDFSETTING=/ebook 4.pdf d.pdf
ps2pdf -dPDFSETTING=/ebook 5.pdf e.pdf
ps2pdf -dPDFSETTING=/ebook 6.pdf f.pdf
ps2pdf -dPDFSETTING=/ebook 7.pdf g.pdf
ps2pdf -dPDFSETTING=/ebook 8.pdf h.pdf
ps2pdf -dPDFSETTING=/ebook 9.pdf i.pdf
ps2pdf -dPDFSETTING=/ebook 10.pdf j.pdf
ps2pdf -dPDFSETTING=/ebook 11.pdf k.pdf
ps2pdf -dPDFSETTING=/ebook 12.pdf l.pdf
ps2pdf -dPDFSETTING=/ebook 13.pdf m.pdf
ps2pdf -dPDFSETTING=/ebook 14.pdf n.pdf
ps2pdf -dPDFSETTING=/ebook 15.pdf o.pdf
ps2pdf -dPDFSETTING=/ebook 16.pdf p.pdf
ps2pdf -dPDFSETTING=/ebook 17.pdf q.pdf
ps2pdf -dPDFSETTING=/ebook 18.pdf r.pdf
ps2pdf -dPDFSETTING=/ebook 19.pdf s.pdf
ps2pdf -dPDFSETTING=/ebook 20.pdf t.pdf
ps2pdf -dPDFSETTING=/ebook 21.pdf u.pdf
ps2pdf -dPDFSETTING=/ebook 22.pdf v.pdf
ps2pdf -dPDFSETTING=/ebook 23.pdf w.pdf
ps2pdf -dPDFSETTING=/ebook 24.pdf x.pdf
ps2pdf -dPDFSETTING=/ebook 25.pdf y.pdf
ps2pdf -dPDFSETTING=/ebook 26.pdf z.pdf

Die Ausgabedatei muss anscheinend anders heißen. Für den Ordner mit den Dateien wird die Konsole geöffnet, die nötigen Zeilen werden kopiert, auf die Eingabestelle in der Konsole mit einem Rechtsklick reinkopiert, schon läuft es durch.

Jetzt müssen die Zieldateien nur noch umbenannt werden, also mit Copy & Past die Dateinamen aus den Originalen übernehmen.

Es ist in jedem Fall einen Versuch wert, jedes Dokument einzeln mit Nautilus (Files) komprimieren ist etwas fad.

PS: "ebook" lässt sich in die anderen Qualitätsstufen abwandeln (siehe Link ganz am Anfang) und möglicherweise lassen sich auch andere Dateiendungen komprimieren oder eben von jpeg in pdf, habe ich noch nicht ausprobiert.

Bearbeitet von tuxifreund:

Forensyntax korrigiert

Moderiert von rklm:

Verschoben in ein passenderes Forum

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Eigentlich muss man nur richtig quoten:

while IFS= read -r -d $'\0' pdf_file
do
    ps2pdf -dPDFSETTING=/ebook "$pdf_file" "compressed_${pdf_file}"
done < <(find /pfad/mit/PDFs -iname "*.pdf" -print0) 

XuKuBu

(Themenstarter)

Anmeldungsdatum:
22. September 2015

Beiträge: 316

seahawk1986 Zu später Stunde werde ich da nicht schlau draus und bin schon froh über meine Improvisation. 😀

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11278

Ok, dann mal etwas ausführlicher:

1
2
3
4
while IFS= read -r -d $'\0' pdf_file
do
    ps2pdf -dPDFSETTING=/ebook "$pdf_file" "$(dirname $pdf_file)/compressed_$(basename ${pdf_file})"
done < <(find /pfad/mit/PDFs -type f -iname "*.pdf" -print0) 

Der find-Befehl in Zeile 4 gibt alle null-terminierten Pfade für Dateien unterhalb von /pfad/mit/PDFs aus, die ohne Rücksicht auf Groß-/Kleinschreibung auf .pdf enden. Diese Ausgabe wird an die davor stehende while-Schleife weitergegeben. Der read-Befehl in Zeile 1 liest die einzeln in die Variable pdf_file ein und in der while-Schleife wird ps2pdf genutzt, um aus der Datei mit dem Pfad aus $pdf_file ein komprimiertes PDF zu erstellen, das den Prefix compressed_ trägt.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

Ich mache das lieber so:

1
2
3
4
5
find /pfad/mit/PDFs -type f -iname '*.pdf' -exec sh -c '
for f; do
  ps2pdf -dPDFSETTING=/ebook "$f" "$(dirname "$f")/compressed_${f##*/}"
done
' -- {} +

Das funktioniert auch in der sh. Die Process Substitution funktioniert nur in der bash.

Antworten |