Ich habe eine 72,9 MB große PDF-Datei, die ich auf unter 500 KB verkleinern muss.
Die Datei war ein JPEG-Bild, das ich gescannt und dann in eine PDF-Datei konvertiert hatte.
Hier ist ein Skript zum Überschreiben von gescannten PDFs:
#!/bin/sh
gs -q -dNOPAUSE -dBATCH -dSAFER \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.3 \
-dPDFSETTINGS=/screen \
-dEmbedAllFonts=true \
-dSubsetFonts=true \
-dColorImageDownsampleType=/Bicubic \
-dColorImageResolution=72 \
-dGrayImageDownsampleType=/Bicubic \
-dGrayImageResolution=72 \
-dMonoImageDownsampleType=/Bicubic \
-dMonoImageResolution=72 \
-sOutputFile=out.pdf \
$1
Man könnte es etwas anpassen, um es wiederverwendbar zu machen, aber wenn man nur ein pdf hat, kann man einfach $1
durch den Dateinamen des pdf ersetzen und es in ein Terminal einfügen.
Ich verwende dazu normalerweise ps2pdf (einfachere Syntax), etwa so:
ps2pdf -dPDFSETTINGS=/ebook BiggerPdf SmallerPDF
Ich verwende das folgende Python-Skript, um die Größe aller PDF-Dateien in einem Verzeichnis auf einem Produktionsserver (8.04) zu reduzieren. Es sollte also funktionieren.
#!/usr/bin/python
import os
for fich in os.listdir('.'):
if fich[-3:]=="pdf":
os.system("ps2pdf -dPDFSETTINGS=/ebook %s reduc/%s" % (fich,fich))
Wenn die Konvertierung in djvu auch in Ordnung wäre und keine Farben im Spiel sind, könnten Sie Folgendes versuchen:
Konvertieren Sie die pdf-Dateien in jpg-Dateien mit "pdfimages -j".
Wenn Sie stattdessen pbm-Dateien erhalten, sollten Sie den Zwischenschritt machen:
for FILENAME in $(ls *.pbm); do convert $FILENAME ${FILENAME%.*}.jpg ;done
Der Befehl convert stammt aus dem Paket imagemagick.
Verwenden Sie dann scantailor, um tif's daraus zu machen.
In einem letzten Schritt gehen Sie in scantailors Ausgangsverzeichnis (wo sich die tif's befinden) und wenden djvubind auf dieses Verzeichnis an.
Dies sollte die Dateigröße drastisch reduzieren, ohne dass die Qualität des Textes darunter leidet. Wenn Sie eine genauere Kontrolle über das OCR-Backend wünschen, können Sie djvubind --no-ocr
verwenden und die OCR-Ebene anschließend mit ocrodjvu hinzufügen.
Wenn Sie Farben in Ihrem Dokument haben, werden die Dinge ein wenig komplizierter. Anstelle von djvubind kann man auch didjvu verwenden und in scantailor muss man dann in den gemischten Modus wechseln und manchmal Farbbilder manuell auswählen.