将多个文本、图像或pdf文件合并成一个单独的pdf文件。

我有一堆文本文件、图片和PDF文件,我想把它们转换成一个单独的PDF文件。我该怎么做?

看一下这个答案:http://askubuntu.com/a/302927/147044 - Radu Rădeanu
20嗯,你可以执行convert image1.jpg image2.png text.txt PDFfile.pdf outputFileName.pdf。这对我有效,但问题是它将text.txt文件转换为图像,所以在生成的pdf中无法突出显示文本。 - Alaa Ali
4@Alaa,你应该将这个发表为答案而不是评论。简洁明了,一针见血。 - LAFK says Reinstate Monica
1gscan2pdf是一个图形用户界面版本,在命令“convert”失败时也可以使用,并且对我很有帮助。从ifoss.com上来的信息:一旦打开了gscan2pdf,你可以通过点击“打开文件”来选择所需的所有文件。默认情况下,它按字母顺序排列,但你可以拖放图片以按照自己的喜好重新排序。然后点击保存图标将文件保存为PDF格式。如果你只想要一个PDF文件,请点击保存即可。由于输出文件默认为PDF格式,在这里你不需要过多担心。只需选择要保存转换后的文件的位置即可。将转换后的图片保存为PDF,就这样。 - Bran
另请参阅超级用户上的如何从一系列图像生成PDF? - zrajm
@AlaaAli,你可以使用我编写的pdf2searchablepdf工具将生成的PDF文件再次转为可搜索的文档。在这里,我描述了该工具。它是基于tesseract光学字符识别引擎的封装程序。 - Gabriel Staples
这是一个出色的文本到PDF解决方案。 - Gabriel Staples
15个回答

如果你愿意使用终端,你可以使用ImageMagick。安装它的命令是:
sudo apt install imagemagick

然后你可以这样做:
convert image1.jpg image2.png text.txt PDFfile.pdf outputFileName.pdf

或者作为另一个例子:
convert *.jpg outputJpgFiles.pdf

对我有效,但问题是它将text.txt文件转换为图像,因此无法在生成的PDF中突出显示文本。


5ImageMagic的convert在我的经验中会降低质量并增加文件大小。你可以尝试使用pdftk,但我不确定如何在其中添加图片。 - akostadinov
6你可以使用“-quality”标志来调整PDF文件的大小,增加或减小。 例如:convert -quality 50 image1.jpeg image2.jpeg image3.jpeg outputFileName.pdf - RajaRaviVarma
6请注意,Convert在幕后使用Ghostscript,并且gs会对JPEG进行解码和重新编码,这会导致质量损失,即使您指定了高质量。 - tobltobs
6我不得不从30000个tiff文件中创建6000多个pdf文件。使用convert命令估计需要6-7个小时的时间。而我使用了tiffcptiff2pdf命令,它们只花费了几秒钟的时间。 - j.c
您可以通过sudo apt install imagemagick命令进行安装。否则,您将无法使用convert命令。 - Melroy van den Berg
9额...这是什么鬼?!当我用两个png文件作为输入,"Test.pdf"作为输出运行convert命令时,出现了这个错误:convert-im6.q16: not authorized \Test.pdf' @ error/constitute.c/WriteImage/1037.` - Michael
5@Michael,请查看https://stackoverflow.com/a/52661288/276052。 - aioobe
@AlaaAli,你可以使用我编写的pdf2searchablepdf工具将生成的PDF文件再次转为可搜索的格式。我在这里描述了它的用法。它是对tesseract OCR引擎的封装。 - Gabriel Staples
convert对我来说不起作用。:( 例如运行:convert *.jpg my.pdfconvert pg-1.jpg pg-2.jpg out.pdf。它们都会产生以下错误:convert-im6.q16: attempt to perform an operation not allowed by the security policy \PDF' @ error/constitute.c/IsCoderAuthorized/408.` - Gabriel Staples
我找到了一个解决方案,用于解决convert-im6.q16: attempt to perform an operation not allowed by the security policy \PDF' @ error/constitute.c/IsCoderAuthorized/408.`错误!请参阅https://stackoverflow.com/a/53180170/4561887。 - Gabriel Staples
这在文本文件上根本无法工作。我收到错误信息:convert-im6.q16: improper image header \text.txt' @ error/txt.c/ReadTXTImage/450.` - Gabriel Staples
点击此链接查看错误信息(仅适用于图像):https://askubuntu.com/a/1127262/1191829 - Lawhatre
/etc/ImageMagick-6/policy.xml中,对<policy domain="coder" rights="read|write" pattern="PDF" />进行相应的设置。(https://linuxhint.com/convert-image-to-pdf-command-line/) - SL5net

安装pdftk
sudo apt-get install pdftk

Pdftk

如果PDF是电子纸,那么pdftk就是一种电子订书机、打孔器、装订器、秘密解码器和X光眼镜。Pdftk是一个用于处理PDF文档的简单工具,可以帮助您完成日常任务。

您可以使用Libre Office将文本或图像转换为PDF文件,然后将其与其他PDF文件合并在一起。

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

它还可以将PDF页面分割为新文档、旋转PDF页面或文档等等。此外,还有许多其他功能。
更多详细信息请点击这里:Ubuntu Geek: PDF编辑工具列表

1有一个 pdftk 的图形用户界面。请看我的回答。 - landroni
11这个方法不能用于将图像与PDF文件连接起来,对吗? - Garrett
3@Garret。不过有几种方法可以将图像转换为PDF,例如使用Covert或从许多程序中打印到PDF。一旦图像成为PDF,您就可以使用pdftk将它们合并在一起。 - Warren Hill
1功能非常好,可以保留PDF中的矢量文本。 - conualfy
3默认仓库中似乎不再可用了? - Boxbot
1对于较新的Ubuntu版本(我相信是从18.04开始),请使用snap install pdftk进行安装。 - kap

试试PDF Chain
PDF Chain是PDF Toolkit(PDFtk)的图形用户界面。该GUI以舒适的方式支持命令行工具的所有常见功能。

enter image description here

你可以从默认的软件源安装它,或者从PDF Chain PPA获取最新版本。
sudo apt-get install pdfchain

或者 PDF Mod

PDF Mod是一个简单的应用程序,用于修改PDF文档。

您可以重新排序、旋转和删除页面,从文档中导出图像,编辑标题、主题、作者和关键字,并通过拖放组合文档。

sudo apt-get install pdfmod

enter image description here


请参阅:


7但是这个软件能够像问题中描述的那样,将文本文件、图片和PDF文件连接起来吗? - Garrett
1你可以将文本文件(比如说,打印为PDF)或者图片(通过convert命令)转换成PDF格式,然后使用它。 - landroni
@Garrett - 刚刚试了一下PDF Chain,它可以用来合并PDF文件。 - conualfy

对于目录及其子目录中包含不同扩展名的多个文件,我找不到一个简洁的答案,所以在这里给出解决方法。
convert -quality 85 `find -type f -name '*.png' -or -name '*.jpg' | sort -V` output.pdf

我使用命令替换find命令返回的选定项作为参数传递给convert命令。不幸的是,sort -n没有正确排序我的文件,所以我尝试了-V选项,它成功了。还请确保你的文件和目录名称事先按照自然排序顺序排列好。例如,dir1, dir2, dir3 而不是 dir1, dir_2, dir3


2太好了!正是我所需的!尝试过多种工具,但都存在某些排序问题。太完美了! - Max
1您可以通过sudo apt install imagemagick进行安装。否则您将无法使用convert命令。 - Melroy van den Berg
1出现错误 convert-im6.q16: 未被授权 `./output.pdf' @ error/constitute.c/WriteImage/1037。 - user1325696
@user1325696 我也收到了你的错误。 - SL5net
1@SL5net 看看这个:https://askubuntu.com/q/1081895/255257 - Dante
对我来说效果很好,唯一的问题是有些文件被旋转了。可能是因为它删除了一些元数据吗? - karizma

这是我用来将多个TIFF转换为PDF的解决方案。

我需要从30,000个TIFF文件创建超过6,000个PDF文件。使用convert估计时间:6到7小时。
我使用tiffcptiff2pdf,它们只需几秒钟。

$ tiffcp 1.tiff 2.tiff ... multi.tiff
$ tiff2pdf multi.tiff > final.pdf

这种方法非常快,因为图像不会被转换,只是被打包。
也许有一些tiff格式不那么容易处理,但对我来说完全没有问题。
希望能对你有所帮助。

1嗯,我的输入TIF文件大小为160M,但是通过tiff2pdf生成的PDF文件大小约为820M。不确定这是否真的只是“压缩”了文件。 - markasoftware
@markasoftware - 减小由扫描图像组成的PDF文件的大小。Dolphin文件管理器的服务菜单在这里 - cipricus
@markasoftware - 在我的情况下,一个90 MB的multi.tiff文件被转换成了一个365 MB的pdf文件。通过使用pdfimages -list命令进行查看,可以看到图像类型为image,这可能意味着未经压缩,宽度/高度为4600 /6408。- 将其缩小到300 dpi后,得到了一个30 MB的pdf文件,并没有明显降低质量。 - cipricus

安装Master PDF编辑器。该工具提供创建、合并和提取PDF文件的功能。点击这里了解有关Master PDF编辑器以及在Ubuntu上安装它的详细信息。

8Master PDF Editor不是免费的。 - Force
2他们的网站上可以看到:基于Linux的版本可以免费用于非商业用途。 - janot
2@janot 是的,但我不认为它是免费的软件。 - Sparhawk
1这是一个非商业用途免费的工具,功能非常出色。与其他在此提到的工具不同,它是现代化且更新的,而那些虽然得票很高但已经过时且简陋。 - user47206
1https://code-industry.net/free-pdf-editor/#get - user47206
免费版本中不允许使用很多功能。 - cipricus

我使用PDF-Shuffler进行这种用途,它非常好用。
sudo apt-get install pdfshuffler

这是一个图形化工具。您只需加载要合并的所有pdf文件。您可以根据需要更改页面顺序。

你能否包含如何完成OP想要的操作的说明? - Seth
完成了。 :-) - cochisebt
3我想给你点个踩,但是我的声望不够。PDF-Shuffler只接受PDF文件。问题中还包括了图片文件和文本文件。 - borisdiakur
使用Libreoffice,您可以将文本文件转换为PDF。由于在Libreoffice中还可以插入图像文件,然后转换为PDF。一旦所有内容都转换为PDF,Pdf-Shuffler就可以完成工作。但我不认为一个软件可以一次完成所有工作。 - cochisebt
截至22.04,pdfshuffler(已更名为“PDF Arranger”)可以实现OP所要求的功能。我需要一个由两个jpg图像组成的多页PDF:只需将它们拖放到PDF Arranger的新空白画布中,保存为新的PDF文件,然后就完成了... - sxc731

在上面社区答案的基础上,你可以执行convert 'ls *.jpg -tr'命令。这样可以强制PDF文件按照图片的时间顺序排列。

在包texlive-extra-utils中有一系列的实用工具,其中包括pdfjam。要合并PDF文件,请使用以下命令:
pdfjoin -o out.pdf 1.pdf 2.pdf 3.pdf

与“convert”不同,它直接在pdf上进行操作,而无需将其转换为图像。
此外,在18.04LTS(Bionic Beaver)上,目前不支持“pdftk”软件包。如果有人更喜欢使用命令行,我建议使用“pdfjam”。

OP在问如何将image1.tif、image2.tif和image3.jpg转换为images.pdf。 - Lexible
不完全是。OP还想将PDF文件与图片合并。最好使用img2pdf命令从图像创建PDF文件,因为它可以创建包含原始图像的PDF,然后再使用pdfjoin工具进行合并。 - kubus
在18.04中的pdftk:https://askubuntu.com/a/1165823/925128(仅限命令行,因为据我所知,在18.04中无法使用`pdfchain`)。 - cipricus
pdfjoinè؟کهڈ¯ن»¥ن»ژه›¾هƒڈو–‡ن»¶هˆ›ه»؛PDF,ن¾‹ه¦‚pdfjoin -o images.pdf *.pngم€‚ - David C. Rankin

我简直不敢相信没有人提到LaTeX(TeX)。它是专门用于制作文档的,可以将文本、图像和PDF合并到一个“主”文档中(而且不会降低质量)。它是一个完整的库套件和可扩展的标记语言,基本上可以说它已经存在了很久,并且在科学界仍然被广泛使用。
从技术上讲,它是一种排版语言。

1这似乎更像是一条评论而不是一个答案...请查看http://askubuntu.com/help/how-to-answer - Marcellinov
3可能是因为没有人预料到楼主的问题会涉及到创建一个与全职工作流程相媲美的工作流。这就像用核弹点燃篝火一样夸张!(顺便说一句,我是TeX的粉丝,但我绝对不会将其用于这个目的。) - Lexible
这很有趣。楼主,请你能否用一些示例代码来演示一下? - Nav