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?
42 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.
1Unfortunately, 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
Make PDF
img2pdf *.jp* --output combined.pdf(optional) OCR the output PDF
ocrmypdf combined.pdf combined_ocr.pdf
Below is the original answer commands with more command and more tools needed:
This to make a
pdffile out of everyjpgimage without loss of either resolution or quality:ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf
Here you will have the
*.pdfs as*.jpg.pdf, so will do a little renamingmmv "*.jpg.pdf" "#1.pdf"
You need to have installed img2pdf and mmv
sudo apt install img2pdf mmv