I know that the command convert *.jpg myPdf1.pdf can convert multiple JPEG files into a single PDF.

But I would like to convert multiple JPEGs into multiple PDFs, for example:

myJPG1.jpg → myPDF1.pdf myJPG2.jpg → myPDF2.pdf myJPG3.jpg → myPDF3.pdf 

Is there any decent way to manage something like that?

4

2 Answers

My first instinct for batch processing files is almost always find. It's excellent if you need to build in any sort of filtering (which you don't here) but it's still a favourite. This will also recurse into subdirectories unless you tell it (with -maxdepth 1 or other):

find -name '*.jpg' -exec convert "{}" "{}.pdf" \; rename 's/\.jpg\.pdf$/.pdf/' *.jpg.pdf 

The find/convert statement will output a load of .jpg.pdf files. The second cleans this up.


Perhaps a slightly more elegant approach in such a simple case:

for file in *.jpg ; do convert "$file" "${file/%jpg/pdf}"; done 

This doesn't recurse and you don't have to mess around cleaning up the filenames.


And I almost forgot, ImageMagick has a numerical output which might fit your use-case perfectly. The following will just stick a three-digit identifier (000, 001, 002, etc) on the end of the "myPDF":

convert *.jpg myPDF%03d.pdf 

Obviously if you're dealing with more than a thousand entries, increase the number. If you don't want it zero-padded, remove the leading zero.

1

Unfortunately, convert changes the image quality before "packing it" into the PDF. So, to have minimal loss of quality, is better to put the original jpg, (works with .png too) into the PDF, you need to use img2pdf.

I use these commands:

With time I discovered a simpler, shorter one liner solution also using img2pdf that doesn't need pdftk as in the original answer

  1. Make PDF

    img2pdf *.jp* --output combined.pdf

  2. (optional) OCR the output PDF

    ocrmypdf combined.pdf combined_ocr.pdf


Below is the original answer commands with more command and more tools needed:


  1. This to make a pdf file out of every jpg image without loss of either resolution or quality:

    ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf

  2. Here you will have the *.pdfs as *.jpg.pdf, so will do a little renaming

    mmv "*.jpg.pdf" "#1.pdf"

You need to have installed img2pdf and mmv

sudo apt install img2pdf mmv 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy