suche PDF Programm zum PDF komprimieren

fast

Cadet 3rd Year
Registriert
Feb. 2004
Beiträge
59
Hallo Leute

bin auf der suche (wenn möglich Freeware) ein Programm für Windows 8 und höher welches bestehende PDFs von der Dateigrösse komprimieren kann.
Dieses muss via cmdline Options funktionieren (Batch).

kennt jemand eines?
 
Versuch es mal mit Ghostscript. Das hat bei mir auch schon oft geholfen. Die PDF Datei war nachher nur noch halb so groß und das ohne verluste.
Code:
gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=out.pdf -q -dBATCH -dNOPAUSE input.pdf
 
es muss lokal ausgeführt werden können und das automatisiert (cmd Batch), welcher dann z.B. via Taskscheduler angestossen wird.
 
fast schrieb:
es muss lokal ausgeführt werden können und das automatisiert (cmd Batch), welcher dann z.B. via Taskscheduler angestossen wird.

Da bietet sich doch die Idee von max40 an.
 
max40 schrieb:
Versuch es mal mit Ghostscript. Das hat bei mir auch schon oft geholfen. Die PDF Datei war nachher nur noch halb so groß und das ohne verluste.
Code:
gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=out.pdf -q -dBATCH -dNOPAUSE input.pdf

Habe GS9.2 x86 installiert und dies so aufgerufen:
Code:
gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=C:\test\001xx.pdf -q -dBATCH -dNOPAUSE C:\test\001.pdf


es wurde ein neues PDF erstellt wie mal angeben nur leider nicht keliern, sonder sogar 1KB grösser (803KB). Habe dies einmal mit einem Acrobat Pro getestet mit der Option PDF Speichern - reduzierter grösse, da komme ich auf 90KB, ein Acrobat steht mir aber da nicht zu Verfügung.


P.S. kann man hier bei den Filenamen auch mit Wildcard * Arbeiten oder einen ganzen Ordner Angeben. Das Oututfile soll auch den gleichen Namen bekommen (also überschrieben werden).
Ergänzung ()

hab noch folgende Optionen gefunden:
•/screen, 72 dpi
•/ebook, 150 dpi
•/printer, 300 dpi
•/prepress, 300 dpi
•/color preserving
•/default, entspricht im Wesentlichen /screen

die helfen so wie es aussieht.

Kann ich hier auch nur mit Ordnern Arbeiten (statt files) bei denen der Inhalt 1:1 so ersetzt wird?
Ergänzung ()

Habe Probleme hier mehrere Files zu packen und die wieder mit dem gleichen Namen neu zu schreiben. (Filenamen ändern sich). Mit einem Wildcard kann man leider nicht Arbeiten z.B. *.PDF
Ergänzung ()

Die Input könnte man mit einer Liste
for %s in (C:\privat2\*.pdf) do ECHO "%s" >> C:\List\filename.lst
bestücken aber beim Output
finde ich keine Lösung mehr.... :(

gibt es sonst noch andere Programme die so etwas via Commandline können oder kann dies irgendwie via VBS umgehen?

PDF24 creator hat z.B. pdf24-compress aber leider finde ich da keine CMD line Möglichkeit :(
Für was werden CMD varianten angeboten wenn man nicht mit Wildcards oder variabeln arbeiten kann ???
 
Zuletzt bearbeitet:
man könnte doch dann in dem DO-Teil den OuptuFile zusammenbauen und danach ghostscript aufrufen

Code:
set _input=c:\privat2\xyz.pdf
set _output=c:\privat2_out\xyz.pdf
gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=%_output% -q -dBATCH -dNOPAUSE %_input%
Hab noch nicht geprüft ob ghostscript die input-Datei mit output-Datei überschreiben kann, aber wenn nicht, kopier dir einfach die Original-Datei in ein eigenes Verzeichnis (z.B. privat2_gs).
Das alles sollte man mit einer kleinen batch-Datei hinbekommen die folgenden Ablauf haben könnte:

Code:
Verzeichnis C:\privat2_gs anlegen
for %s in (C:\privat2\*.pdf) do(        <-- ich glaub hier gibt es noch andere Varianten 
                                          so das du nur den Dateinamen erhälst
 - pdf datei kopieren nach c:\privat2_gs
 - ghostscript aufrufen welches c:\privat2_gs\%s liest und nach c:\privat2\%s ausgibt
 - pdf datei aus c:\privat2_gs löschen
)
Verzeichnis C:\privat2_gs löschen
 
Zuletzt bearbeitet:
@max40

man könnte doch dann in dem DO-Teil den OuptuFile zusammenbauen und danach ghostscript aufrufen

Code:
set _input=c:\privat2\xyz.pdf
set _output=c:\privat2_out\xyz.pdf
gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=%_output% -q -dBATCH -dNOPAUSE %_input%

@ Hallo max40

danke für Deine Hilfe hierbei.
ich verstehe den zitierten code oben nicht wirklich. Das setzen der 2 Variabeln bringt mir nichts so wie ich das sehe. Das ist nichts anderes als die beiden Filenamen direkt anzugeben.

Beim Input könnte ich über einen Umweg wie beschrieben:
Code:
 for %s in (C:\privat2\*.pdf) do ECHO "%s" >> C:\List\filename
gehen.

lst gehen aber wie kann ich dies mit einem multiple Output mit den gleichen Filenamen wie vorher versehen?
 
Zuletzt bearbeitet:
das xyz.pdf muss halt durch den wert auf dem FOR getauscht werden. Wobei ich jetzt nicht die genaue Syntax kenne, da kann dir ggf. google weiter helfen oder jemand anderes.

Code:
    set _input=c:\privat2\%%s
    set _output=c:\privat2_out\%%s
    gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=%_output% -q -dBATCH -dNOPAUSE %_input%
 
ich kann nur sagen
gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=%_output% -q -dBATCH -dNOPAUSE %_input%
wird sicher nicht funktionieren und beim Input mit einer liste zu arbeiten muss ein @ hin.

Beim Output funktioniert das @ nicht so wie ich das sehe.

gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=??MultipleSupport mitdem gleichen Inputnamen? -q -dBATCH -dNOPAUSE @%_input%

gswin32c.exe -sDEVICE=pdfwrite -sOutputFile=C:\privat3\test-%d.pdf -q -dBATCH -dNOPAUSE @%_input%
würde eine eigene Nummerierung ergeben
 
Zuletzt bearbeitet:
Nachfolgender Code erzeugt das pdfinput_gs Verzeichnis, kopiert alle *.pdf Dateien aus pdfinput nach pdfinput_gs und ruft dann für jede PDF-Datei Ghostscript auf, wobei die Basis-PDF aus dem pdfinput_gs genommen wird und dann nach pdfinput konvertiert. Zum schluss wird das pdfinput_gs verzeichnis gelöscht.

Code:
cd d:\temp\pdfinput\
set PATH=c:\Program Files (x86)\gs\gs9.20\bin\;%PATH%
mkdir "%cd%_gs"
for /r . %%g in (*.pdf) do (
copy "%%g" "%cd%_gs/%%~nxg" 
gswin32c.exe -sDEVICE=pdfwrite -sOutputFile="%%g" -q -dBATCH -dNOPAUSE "%cd%_gs/%%~nxg" 
)
rd /s /q "%cd%_gs"
 
Zuletzt bearbeitet:
Zurück
Oben