2013-02-02 4 views
2

Je voudrais convertir un fichier pdf en un fichier PDF en noir et blanc avec ImageMagick. Mais j'ai deux problèmes: J'utilise cette commande:ImageMagick pdf en noir et blanc pdf

convert -colorspace Gray D:\in.pdf D:\out.pdf 
  1. Mais cette commande convertir la page FIRST ... Comment convertir toutes les pages?
  2. Après l'utilisation de cette commande, la résolution est terrible ... mais si j'utilise l'option -density 300, la taille du fichier a plus que doublé. Donc, je voudrais utiliser le même paramètre DPI, mais comment utiliser?

Merci beaucoup

Répondre

1

En supposant que vous avez tous les outils de ligne de commande nécessaires installés, vous pouvez effectuer les opérations suivantes:

  1. Split et rejoindre PDF en utilisant pdfseparate et pdfunite (Poppler outils).
  2. Extraire la densité d'origine en utilisant pdfinfo plus grep/egrep et, par exemple, sed. Cela ne garantit pas la même taille du fichier PDF, juste le même DPI.

Mettre tous ensemble, vous pouvez avoir une série de commandes bash comme suit:

pdfseparate in.pdf temp-%d.pdf; for i in $(seq $(ls -1 temp-*.pdf | wc -l)); do mv temp-$i.pdf temp-$(printf %03d $i).pdf; done 
for f in temp-*.pdf; do convert -density $(pdfinfo $f | egrep -o 'Page size:[[:space:]]*[0-9]+(\.[0-9]+)?[[:space:]]*x[[:space:]]*[0-9]+(\.[0-9]+)?' | sed -e 's/^Page size:\s*//'| sed -e 's/\s*x\s*/x/') -colorspace Gray {,bw-}$f; done 
pdfunite bw-temp-*.pdf out.pdf 
rm {bw-,}temp-*.pdf 

Note 1: il comme solution sale (for/wc/seq/printf) pour une commande appropriée de 10-999 pages PDF (je n'ai pas compris comment mettre des zéros en début dans pdfseparate).

Remarque 2: Je suppose qu'ImageMagick considère les fichiers PDF comme un autre fichier image binaire. Par exemple, pour les fichiers texte principalement, cela entraînera d'énormes fichiers PDF. Ainsi, il s'agit d'une très mauvaise méthode pour convertir des fichiers PDF textuels en B & W.