web-dev-qa-db-fra.com

Conversion de centaines de jpg en PDF à l'aide de Terminal

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?

7
Your Majesty

Mon premier instinct pour le traitement par lots de fichiers est presque toujours findname__. 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 findname __/convertgé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.

9
Oli

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
1
Eduard Florinescu