2010-11-20 7 views
6

Comment puis-je utiliser à la fois ls et convertir pour transformer tous les fichiers d'images dans un répertoire en pdf? Aussi, j'ai besoin de mettre les fichiers dans un certain ordre, par exemple des fichiers comme AA1.png, AA11.png besoin de respecter cet ordre logique.Bash convertir en pdf

Les mises à jour (ls) et (convert) sont disponibles, mais comment les utiliser ensemble?

+0

Voulez-vous dire des fichiers PDF séparés ou un seul PDF? – Orbling

+0

J'ai besoin d'un seul pdf – danidacar

Répondre

7

Convertir en un seul fichier PDF peut se faire en une seule commande:

convert -compress jpeg *.jpg my-jpegs.pdf 

Rappelez-vous d'inclure le drapeau -compress jpeg, ou il va stocker les images non compressées et le résultat dans un fichier PDF massif. ImageMagick (via convertir) nécessite l'installation de Ghostscript (gs) pour traiter les documents PDF, je crois. Méfiez-vous des problèmes de mémoire si vous ajoutez beaucoup de fichiers JPEG à la fois.

En ce qui concerne votre commande logique, vous pouvez utiliser ls en combinaison avec convert pour obtenir la liste dans l'ordre.

Quelque chose le long des lignes de:

convert -compress jpeg `ls *.png` my-jpegs.pdf 

Voir ls --help pour les différentes options de tri disponibles.

+0

Bon conseil, mais l'ordre de tri est le problème. – danidacar

+0

Bon, j'ai ajouté plus pour votre problème de tri. – Orbling

+0

Le 'ls' en backticks ne fait rien d'utile par lui-même. Si vous ajoutez une option de tri utile, cela peut être justifié. – tripleee

0
for image in `ls *.png`; do 
    # call convert or whatever here 
    convert $image `basename $image .png`.pdf 
done 
+0

J'ai besoin d'un seul fichier pdf avec toutes les images classées par nom (ordre logique image1.png, image2.png, ... image11.png) – danidacar

+1

Le 'ls' dans les guillemets est un antipattern. 'pour l'image en * .png; do ... 'est à la fois plus simple et plus correct. – tripleee

4

https://gitlab.mister-muffin.de/josch/img2pdf

Dans toutes les solutions proposées impliquant ImageMagick (à savoir convert), les données JPEG entièrement décodées et obtient recodé. Cela se traduit par generation loss, ainsi que des performances "dix à cent" fois pire que img2pdf.

+0

Je ne vois pas de licence sur ce code. L'avez-vous écrit vous-même? Est-ce MIT, GPL, etc? – Orbling

+0

Je n'ai pas écrit ça. L'adresse e-mail de son auteur est cachée dans son test_comp.sh si vous voulez le contacter. –

+0

Pas particulièrement, juste pensé qu'il est inutilisable généralement sans licence. Ce qui est une honte, car c'est sans doute utile. – Orbling

1

Si vous avez beaucoup de fichiers:

convert -limit memory 1 -limit map 1 *.jpg foo.pdf 

see here

ou avec une compression

convert -limit memory 1 -limit map 1 -compress jpeg -quality 85 *.jpg foo.pdf