我知道这个命令convert *.jpg myPdf1.pdf
可以将多个 JPEG 文件转换为一个 PDF。
但我想将多个 JPEG 转换为多个 PDF,例如:
myJPG1.jpg → myPDF1.pdf
myJPG2.jpg → myPDF2.pdf
myJPG3.jpg → myPDF3.pdf
有没有什么好的方法来处理这样的事情?
答案1
我对批处理文件的第一反应几乎总是find
。如果您需要构建任何类型的过滤(您在这里不需要),它就很棒,但它仍然是我的最爱。除非您告诉它(使用-maxdepth 1
或其他),否则它还会递归到子目录中:
find -name '*.jpg' -exec convert "{}" "{}.pdf" \;
rename 's/\.jpg\.pdf$/.pdf/' *.jpg.pdf
find
/语句convert
将输出大量.jpg.pdf
文件。第二个语句会清理这些文件。
在这种简单的情况下,也许有一种更优雅的方法:
for file in *.jpg ; do convert "$file" "${file/%jpg/pdf}"; done
这不会递归,您不必费心清理文件名。
我差点忘了,ImageMagick 有一个数字输出,可能非常适合您的用例。下面将在“myPDF”末尾附加一个三位数标识符(000
、001
、等):002
convert *.jpg myPDF%03d.pdf
显然,如果您要处理的条目超过一千个,请增加该数字。如果您不想用零填充,请删除前导零。
答案2
很遗憾,convert
在将图像“打包”到 PDF 之前会更改图像质量。因此,为了将质量损失降到最低,最好将原始图像jpg
(.png
也适用于) 转换为 PDF,您需要使用img2pdf
。
我使用这些命令:
随着时间的推移,我发现了一种更简单、更短的方法一个班轮解决方案也使用img2pdf
不需要pdftk
像原始答案中那样
制作 PDF
img2pdf *.jp* --output combined.pdf
(可选)对输出的 PDF 进行 OCR
ocrmypdf combined.pdf combined_ocr.pdf
以下是原来的使用更多命令和更多所需工具来回答命令:
这样可以使
pdf
每个图像都生成一个文件jpg
,而不会损失分辨率或质量:ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf
在这里你将得到
*.pdf
s 作为*.jpg.pdf
,因此将进行一些重命名mmv“*.jpg.pdf”“#1.pdf”
您需要安装 img2pdf 和 mmv
sudo apt install img2pdf mmv