Je sais que la commande convert *.jpg myPdf1.pdf
peut convertir plusieurs fichiers JPEG en un seul fichier PDF.
Mais je voudrais convertir plusieurs JPEG en plusieurs PDF, par exemple:
myJPG1.jpg → myPDF1.pdf
myJPG2.jpg → myPDF2.pdf
myJPG3.jpg → myPDF3.pdf
Y at-il un moyen décent de gérer quelque chose comme ça?
Mon premier instinct pour le traitement par lots de fichiers est presque toujours find
name__. C'est excellent si vous avez besoin d'intégrer n'importe quel type de filtrage (ce que vous n'avez pas ici) mais c'est toujours un favori. Cela retournera également dans les sous-répertoires à moins que vous ne le disiez (avec -maxdepth 1
ou autre):
find -name '*.jpg' -exec convert "{}" "{}.pdf" \;
rename 's/\.jpg\.pdf$/.pdf/' *.jpg.pdf
L'instruction find
name __/convert
générera une charge de fichiers .jpg.pdf
. La seconde nettoie cela.
Peut-être une approche légèrement plus élégante dans un cas aussi simple:
for file in *.jpg ; do convert "$file" "${file/%jpg/pdf}"; done
Cela ne récidive pas et vous n'avez pas à vous soucier de nettoyer les noms de fichiers.
Et j'ai presque oublié, ImageMagick a une sortie numérique qui pourrait parfaitement convenir à votre cas d'utilisation. Les éléments suivants vont simplement coller un identifiant à trois chiffres (000
, 001
, 002
, etc.) à la fin du "myPDF":
convert *.jpg myPDF%03d.pdf
Évidemment, si vous avez plus de mille entrées, augmentez le nombre. Si vous ne le souhaitez pas, supprimez le zéro de gauche.
Malheureusement convert
change l'image avant, donc pour avoir une perte minimale de qualité de l'original jpg
, vous devez utiliser img2pdf
qui rend le pdf
avec l'original jpg
, donc aucune perte, j'utilise ces commandes:
1) Ceci pour créer un fichier pdf
à partir de chaque image jpg
sans perte de résolution ni de qualité:
ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf
2) Ici, vous aurez le *.pdf
comme *.jpg.pdf
, donc vous renommerez un peu
mmv "*.jpg.pdf" "#1.pdf"
Vous devez avoir installé img2pdf et mmv
Sudo apt install img2pdf mmv