我的目录中有许多JPEG文件,我想将它们转换为PDF并将它们连接在一起以组成一个文档。

该怎么做?

我希望使用命令行,因为此过程会更快。

#1 楼

imagemagick软件包中,使用convert命令:
convert *.jpg -auto-orient pictures.pdf

您将获得一个包含当前文件夹中所有jpg的pdf。
选项-auto-orient读取图像的EXIF数据以旋转图像。
使用以下命令安装IM:
sudo apt-get install imagemagick

来源:stackoverflow
imagemagick选项
编辑:请注意,如果未编号,则图像将不按特定顺序排列。如果您有10个或更多,则需要给它们命名以filename01.jpg ... filename99.jpg等结尾。为正确排序,必须使用前导零。如果您有100个或更多的001 ... 999。

评论


使用小丑对我不起作用,我不得不使用@Alex的解决方案。

–尤塞比乌斯
2015年9月11日9:31

@Eusebius如果通配符不适用于您的convert,则可以在* .jpg中使用像f一样的oneliner;确实转换“ $ f”“ $ f.pdf”;完成pdftk * .pdf cat输出final.pdf

–古怪的长老
2015年12月2日,00:00

GrphicMagick用户应运行gm convert * .jpg图片.pdf

– michaelbn
17年1月16日在9:50

也许我的jpg文件太大并且太多了,但是这样做几乎立即消耗了太多的RAM,以至于我的16GB系统开始交换。

–罗恩·约翰(RonJohn)
18年4月12日在21:18

请注意,此方法现在可能会导致未经授权的错误;看到这个相关的问题(和答案)。

–贾尼·乌西塔洛(Jani Uusitalo)
19年4月16日在12:45

#2 楼

不幸的是,convert在将其“打包”成PDF之前改变了图像质量。因此,为了使质量损失最小,最好将原始jpg放入PDF中,您需要使用img2pdf

我使用以下命令:

在注释中添加了img2pdf的一种较短的衬管解决方案



制作PDF

img2pdf *.jp* --output combined.pdf


OCR输出PDF

ocrmypdf combined.pdf combined_ocr.pdf


带有更多命令和更多工具的原始命令:



此命令是在每个pdf图像中制作一个jpg文件,而不会降低分辨率或质量:

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


此命令将pdf的页面连接到一个文档中:

pdftk *.pdf cat output combined.pdf


最后,我添加了一个OCRed文本层,该层不会改变pdf中的扫描质量,因此可以搜索它们:

pypdfocr combined.pdf

pypdfocr

ocrmypdf combined.pdf combined_ocr.pdf



评论


很棒的方法!没有压缩的唯一缺点是生成的.pdf文件大小会很高(即比所有图片的总和稍大)。但是如果您要转换的文档确实很重要,则值得!

–Gokul NC
18/12/23在13:14

转换失败并显示“尝试执行安全策略'PDF'不允许的操作”后,此方法运行良好。

–马特西亚斯·布劳恩(Matthias Braun)
19年5月6日15:33



img2pdf支持同时输入许多JPEG。请参见其手册页中的示例。

– Yai0Phah
20 Jan 2 '20 at 10:54



img2pdf * .jpeg --output jpegsas.pdf对我有用,没有管道或多个步骤,订购是正确的。虽然我不关心ocr,但是可以轻松添加该代码。谢谢!

– JanBühler
20-2-11在8:52

@MatthiasBraun在此处解决问题askubuntu.com/questions/1081695/…

– yroc
20 Mar 17 '20 at 20:50

#3 楼

convert `ls -1v` file.pdf



此ls将以“自然顺序”(1,2,3 ...)一次列出一个文件,然后进行转换。


评论


我尝试了这个,但对我却没有用。许多错误表明它可能与文件名中的空格有关。

–古怪的长老
2015年12月1日23:31

要解决空间问题,请首先执行模式替换:对于* .jpg中的ThisFile;做MV“ $ ThisFile”“ $ {ThisFile // / _}”> / dev / null 2>&1; d

–西蒙磨砂
18年5月1日在13:06



#4 楼

为我工作(但警告!关闭压缩,结果PDF将会很大!):

convert page1.jpg page2.jpg +compress file.pdf


甚至:

convert -rotate 90 page\*.jpg +compress file.pdf


来自ubuntuforums.org的+compress帮助它挂起。
注意:+ compress关闭压缩。没有+ compress选项,当时我正在使用的计算机似乎“永远挂着”(虽然我并没有永远等待着发现。)。您的里程可能会有所不同!在imagemagick.org选项-compress上的RTFM,如果您遇到缓慢的压缩/挂起问题,可以尝试使用-compress 来找出适合您的方法。

评论


如上面建议的那样,不要在转换命令中使用+ compress选项!实际上,它会禁用所有压缩功能,使您的PDF比原始JPEG大10倍。只是不指定压缩选项,然后convert将使用输入压缩格式(JPEG),在这种情况下,按大小选择最佳压缩文件。来源:http://www.imagemagick.org/script/command-line-options.php#compress

–user335432
2014年10月7日20:25

那不直观!谢谢S Minddal。那确实对我有用。我认为当时使用的计算机在执行压缩时出现问题。我会调整答案。

–gaoithe
2014年10月8日14:31

因此$ converet * .jpg file.pdf与+ compress参数相比,在较小的文件大小下效果很好

–博士
2015年9月1日于18:02

#5 楼

用LibreOffice Writer打开jpg或png文件并导出为PDF。

我希望这是导出pdf的简单方法。

评论


是! LibreOffice是将图像文件导出为PDF的最佳方法。我们完全控制PDF输出,包括页面布局,调整导入文件的大小,可选的页眉和页脚等等。非常感谢user359154的巧妙建议!

–user371260
15年1月22日在16:59

#6 楼

以下解决方案还依赖于ImageMagick的convert,但由于以下原因而更加复杂:


它允许所有图像具有不同的尺寸,同时保持输出PDF页面大小相同(下面的示例)。
它使图像在PDF页面上居中。
它可以保证图像边界和PDF页面边界之间的最小距离,从而可以毫无问题地打印PDF。
它不会更改图像数据。 (因此,图像质量不受影响,PDF文件与图像的文件大小几乎相同,因此您以后可以使用pdfimages -j file.pdf img重新提取原始图像。)目前,这仅适用于PNG –请参阅@dma_k的注释下面的说明。

说明:


使用此答案中的脚本将每张图像转换为自己的一页A4页大小和5%边框的PDF文件

使用PDFtk连接所有一页PDF文件,如下所示:

pdftk *.pdf cat output out.pdf




评论


此命令表明(至少在Ubuntu 16.04上提供的版本中)图像数据受到影响:convert some.jpg -format pdf -compress jpeg generate.pdf; pdfimages -j生成.pdf生成.pdf; diff -sq some.jpg生成.pdf-000.jpg

–StéphaneGourichon
16年7月21日在0:14

我在玩GraphicsMagick时,发现它执行图像重新压缩。 PDF页面上生成的JPEG图像的质量差得多。因此,目前最安全的方法是添加PNG图片-正确插入它们。也请参阅此帖子。

– dma_k
17-10-1在16:55



#7 楼

我很好奇,没有人指出pdfjam,这是一种将图像/ pdf合并为pdf的超高效方法:

pdfjam --a4paper *.jpg


会为您创建A4格式的pdf用于所有.jpg文件,通常以-pdfjam.pdf结尾。要强制使用特定的输出名称,您有一个--output <your output>选项!

据我所知,没有对该文件进行重新编码,与convert相比,该命令相当快。 >
要安装pdfjam,我不确定最有效的方法是什么(LaTeX自动提供),但是您可以尝试:

sudo apt install pdfjam


或也许

sudo apt install texlive-extra-utils


#8 楼

我使用了http://convert-my-image.com/
您可以提供的积极的东西(相同的站点,但是不同的页面)是图像的存档,并将它们连接到常见的pdf

评论


该建议至少具有三个问题:(1)由于将图像上传到网站并下载生成的PDF,速度会很慢; (2)它会将您的数据公开给运营该网站的任何人,可能违反该网站的任何人以及在线的任何人; (3)它不是命令行解决方案。

–user13975
18-10-12在16:59