Anzeige:
Ergebnis 1 bis 5 von 5

Thema: mit ghostscript mehrere pdfs verkleinern

  1. #1
    Registrierter Benutzer
    Registriert seit
    Oct 2014
    Beiträge
    11

    mit ghostscript mehrere pdfs verkleinern

    Hallo zusammen,

    ich möchte in einem Verzeichnis mehrere (alle) dort liegende Dateien, alles pdfs, mit ghostscript verkleinern.

    Den Befehl für eine einzelne Datei habe ich bereits mehrfach erfolgreich angewendet:

    gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dTextAlphaBits=1 -dGraphicsAlphaBits=1 -r70 -sOutputFile=A.pdf B.pdf

    wobei A und B am Schluß die Platzhalter für den jeweiligen Ein/Ausgabe-Dateiname steht (habe die Dateien immer vorher umbenannt und anschließend zurück, um die langen Dateinamen nicht immer eintippen zu müssen ;-) )

    Jetzt will ich aber mehrere, vielleicht hunderte, pdfs so bearbeiten, das geht ja, nach mehreren Quellen, offensichtlich auch mit diesem Befehl, wenn man korrekte Variablen für Ein- und Ausgabe-Name setzt. Stimmt das soweit? Bin aber nicht gut genug auf der Konsole, um sowas selbst zuverlässig zu wissen, verschiedene Varianten von * bis $file haben keine gewünschten Ergebnisse gebracht.

    Also meine Frage: Wie muß ich den Befehl abändern, damit jede Datei im Verzeichnis hintereinander einzeln abgearbeitet wird und danach jeweils eine neue, verkleinerte pdf entsteht, möglichst unter dem originalen Dateinamen, obwohl ich auch gelesen habe, daß gs das Überschreiben aus Sicherheitsgründen nicht macht. Also meinetwegen notfalls auch eine neue Datei mit einem neuen zusätzlichen Zeichen im Dateinamen zur Unterscheidung, kann ich hinterher wieder weglöschen. Ich will natürlich NICHT eine einzige Datei haben, in der alle anderen pdfs im Verzeichnis zusammengefaßt sind. DAS habe ich auch selbst schon ungewollterweise geschafft ;-)

    So, hoffentlich war das nicht zu weitschweifig, ich hoffe jedenfalls, hier Tipps zu kriegen, die mir die Arbeit erleichtern können. Dafür schon mal Danke im voraus!

    Gruß
    Alex

  2. #2
    Registrierter Benutzer
    Registriert seit
    Dec 2003
    Ort
    Dettenhausen
    Beiträge
    20.356
    ich würde den gewünschten Befehl in ein keines Shell-Script packen, den Dateinamen der zu bearbeitenden Datei per Parameter an das Script übergeben (und das hin und her-kopiere auch gleich mit im Script erledigen lassen, sofern Du kein Backup der Orignaldaten haben willst) und das ganze dann per find oder anderweitiger Schleife aufrufen.
    Ich bin root - ich darf das.

  3. #3
    Registrierter Benutzer
    Registriert seit
    Oct 2014
    Beiträge
    11
    Danke schonmal!

    mit shell script meinst sowas, ja?:

    #!/bin/bash

    for file in *.pdf
    do
    "gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dTextAlphaBits=1 -dGraphicsAlphaBits=1 -r70 -sOutputFile=$file $file"
    done

    Das hab ich mir grad mal von einem anderen ghostscript-Befehl zusammengebastelt... Da ich aber bisher mit Shell scripts nix zu tun hatte, ein paar blöde Fragen dazu:
    - das alles schreib ich in ne simple Textdatei, ja? Und gebe der dann einen Namen, z.B. comprpdf ??
    - ich speichere die dann am besten wo?
    und kann sie dann beliebig über den Befehl comprpdf aufrufen?
    Funktioniert das so?

  4. #4
    Registrierter Benutzer
    Registriert seit
    Oct 2014
    Beiträge
    11
    Also, hab jetzt mal was versucht:

    #!/bin/bash

    for file in *.pdf
    do
    "gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dTextAlphaBits=1 -dGraphicsAlphaBits=1 -r70 -sOutputFile=$file $file"
    done

    als comprpdf gespeichert, ausführbar gemacht, im Verzeicnis x mit den drei pdfs A, B und C aufgerufen, kommt das bei raus:

    alexsch@linux-yhd2:~/Daten/Literatur0317/x> comprpdf
    /home/alexsch/bin/comprpdf: Zeile 5: gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dTextAlphaBits=1 -dGraphicsAlphaBits=1 -r70 -sOutputFile=A.pdf A.pdf: Kommando nicht gefunden.
    /home/alexsch/bin/comprpdf: Zeile 5: gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dTextAlphaBits=1 -dGraphicsAlphaBits=1 -r70 -sOutputFile=B.pdf B.pdf: Kommando nicht gefunden.
    /home/alexsch/bin/comprpdf: Zeile 5: gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dTextAlphaBits=1 -dGraphicsAlphaBits=1 -r70 -sOutputFile=C.pdf C.pdf: Kommando nicht gefunden.
    alexsch@linux-yhd2:~/Daten/Literatur0317/x>

    Die Datei funktioniert als solche offensichtlich, nur die Syntax ist wohl noch nicht ok... vermutlich was mit den input/output-Dateinamen... irgendwelche Ideen oder Vorschläge?
    Geändert von anoxde (07.08.17 um 21:58 Uhr)

  5. #5
    Registrierter Benutzer
    Registriert seit
    Oct 2014
    Beiträge
    11
    So, auch ohne weitere Tips hier hab ich es wohl geschafft, und vielleicht interessierts ja jemanden später nochmal:

    Erfolg brachte die Einführung eines Unterverzeichnisses /compr, wo ich die komprimierten pdfs ablegen lasse:

    #!/bin/bash

    for file in *.pdf
    do
    gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dTextAlphaBits=1 -dGraphicsAlphaBits=1 -r70 -sOutputFile=compr/"$file" "$file"
    done
    Damit überschreibt das skript zwar nicht wie eigentlich gewünscht die Originaldatei, aber die kann ich dann ja einfach löschen und habe die neue mit dem Originalnamen dann halt in 'nem Unterverzeichnis, mir doch egal ;-) Hautsache, es läuft, und das tut es!

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 21.02.14, 14:42
  2. PDFs zu Durchsuchen
    Von Alex2.0.0.4 im Forum Anwendungen Allgemein, Software
    Antworten: 2
    Letzter Beitrag: 13.07.10, 00:27
  3. PDFs verbinden
    Von Okular im Forum Anwendungen Allgemein, Software
    Antworten: 3
    Letzter Beitrag: 25.02.10, 17:32
  4. FS verkleinern -> Partition verkleinern, aber wie?
    Von bievor im Forum System installieren und konfigurieren
    Antworten: 0
    Letzter Beitrag: 24.04.04, 00:53
  5. PDFs bearbeiten
    Von xmms im Forum Anwendungen Allgemein, Software
    Antworten: 4
    Letzter Beitrag: 20.08.03, 14:46

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •