要将多个图像转换为 pdf,此脚本将对文件夹内的所有图像执行此操作:
#!/bin/bash
#
for f in *.png; do
convert ./"$f" ./"${f%.png}.pdf"
done
但每个图像都会转换为单独的文件。
可以将所有图像转换为一个 PDF 吗?
答案1
您可以使用以下-adjoin
选项convert
:
convert -adjoin *.png out.pdf
此命令将生成一个pdf
包含所有图像的文件png
。
答案2
来源在这里,到从任意一组文档生成 PDF 文件,不仅仅是图像。
从上述来源:
主要原理
当您想从多个文档生成多页 PDF 文件时,您需要执行以下几个步骤:
Sort of all input documents in alphabetical order Convert them to some temporary PDF files Assemble all temporary PDF documents to a final multi-pages PDF document.
应根据输入文档的 mimetype 将输入文档转换为临时 PDF 格式:
Image files (jpg, png, tiff, …) Plain text files (txt) Libre Office & Open Office documents (odt, ods, …) Microsoft Office files (doc, docx, xls, xlsx, ppt, pptx, …)
根据输入文档类型,应使用特定工具转换为 PDF:
convert (from ImageMagick) for image files unoconv for Libre Office, Microsoft Office and plain text files
将所有输入文档转换为一些临时 PDF 文件后,将使用 GhostScript 完成最终文档组装。这个强大的工具可以:
merge multiple PDF documents optimize final file size
对于 Nautilus 和 Gnome,请参阅上述链接的更多详细信息,其中包括更多用于自动化所需流程的脚本。我使用了更有限的方法,因为该解决方案针对 Gnome 和 Nautilus 进行了简化,而我主要使用 KDE 和 Dolphin。
该解决方案给出了问题中要求的结果,但也适用于文本文档和 pdf(图片旁边)并将它们全部合并到最终的 pdf 中。
文件被集成到输出 pdf 中按字母顺序。
也可以应用最终的上下文菜单命令到包含所有文件的文件夹被合并。
该解决方案还包括一些图形用户界面特征。
所以:
sudo apt-get install imagemagick unoconv ghostscript zenity libfile-mimeinfo-perl
使用gedit
或其他文本编辑器:
gedit ~/.config/pdf-generate.conf
并粘贴此:
[general]
compression=95
density=200
因此,如果您想修改任何默认参数,只需在运行该工具之前编辑此文件即可。
负责 PDF 生成 k=job 的主脚本应放置在/usr/local/bin/pdf-generate
.有关主脚本的内容,请参阅源链接。 (还这里.)
您可以从命令行安装主脚本及其配置文件:
# mkdir --parents $HOME/.config
# wget --header='Accept-Encoding:none' -O $HOME/.config/pdf-generate.conf https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/pdf/pdf-generate.conf
# sudo wget --header='Accept-Encoding:none' -O /usr/local/bin/pdf-generate https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/pdf/pdf-generate
# sudo chmod +x /usr/local/bin/pdf-generate
要将此 PDF 生成工具完全集成到您的桌面环境中:
gedit /usr/share/applications/pdf-generate.desktop.
请参阅 Gnome/Nautilus 集成以及自动下载和安装的链接。一个稍微简化和调整的版本,以满足我的 KDE 需求:
[Desktop Entry]
Type=Application
Exec=pdf-generate
Hidden=false
NoDisplay=false
Icon=pdf
Keywords=pdf;generate;image;office;document;merge
StartupNotify=true
Name[en_US]=Generate PDF document
Name[en]=Generate PDF document
Name[C]=Generate PDF document
Name[fr_FR]=Génération d'un PDF
Comment=Tool to merge a set of documents to a PDF file.
Comment[en_US]=Tool to merge a set of documents to a PDF file.
Comment[fr_FR]=Outil de concaténation de documents en un fichier PDF.
MimeType=image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/tiff;application/pdf;application/x-pdf;application/x-bzpdf;application/x-gzpdf;application/msword;application/vnd.ms-word;application/vnd.oasis.opendocument.text;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-excel;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.ms-powerpoint;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.openxmlformats-officedocument.presentationml.template;application/vnd.openxmlformats-officedocument.presentationml.slideshow;text/plain;
Categories=GNOME;GTK;Graphics;Conversion;Utility;
要获得完整的桌面集成,这个 PDF 生成工具应该是可通过文件管理器上下文菜单中的自定义操作使用。
对于 Nautilus,您需要在位于下面的 .desktop 文件中声明新的自定义操作~/.local/share/file-manager/actions
(请参阅内容链接)。对于 Dolphin/KDE,它的格式为~/.kde/share/kde4/services/ServiceMenus/
.因此,我做了:
gedit ~/.kde/share/kde4/services/ServiceMenus/pdf-generate.desktop
内容:
[Desktop Entry]
Actions=pdf-generate
Encoding=UTF8
Icon=pdf
MimeType=MimeTypes=image/bmp;image/gif;image/jpeg;image/jpg;image/png;image/tiff;application/pdf;application/x-pdf;application/x-bzpdf;application/x-gzpdf;application/msword;application/vnd.ms-word;application/vnd.oasis.opendocument.text;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-excel;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.ms-powerpoint;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.openxmlformats-officedocument.presentationml.template;application/vnd.openxmlformats-officedocument.presentationml.slideshow;text/plain;inode/directory;application/pdf
ServiceTypes=KonqPopupMenu/Plugin
Type=Service
[Desktop Action pdf-generate]
Exec=pdf-generate %F
Icon=pdf
Name=Create pdf file
重新登录后,选择文件时会出现上下文菜单选项,如源链接中所示。对于我的 KDE/Dolphin 配置,如果所选文件具有相同的扩展名,则这适用于它们。否则,最好的方法是将所有需要的文件放在一个文件夹中,然后从该文件夹的右键单击上下文菜单中执行命令。
在包含 png、jpeg、pdf 和 odt 文件的文件夹上进行测试:
输出文件位于源文件夹中,名称为first_in_alphabetical_order-merged.pdf
.
答案3
更新:
我最近在Dolphin中使用的是这个服务菜单:
[Desktop Entry]
Type=Service
Actions=image2pdf
Icon=application-pdf
Encoding=UTF-8
TryExec=img2pdf
ServiceTypes=KonqPopupMenu/Plugin
MimeType=image/*
[Desktop Action image2pdf]
Exec=konsole -e img2pdf %F -o out.pdf
Icon=application-pdf
Name=Convert selected image(s) into single pdf
sudo apt install imagemagick
为文件管理器创建一个上下文菜单,例如 Dolphin 的“服务菜单”;~/.local/share/kservices5/ServiceMenus/IMG_2_PDF.desktop
: 4pPtqnJTDYShMf3 [桌面条目] Type=Service ServiceTypes=KonqPopupMenu/Plugin MimeType=image/*;行动=pdf;
[Desktop Action pdf]
Name=Create PDF from images
Icon=application-pdf
Exec=bash -c 'convert %F out.pdf'
对于任何支持上下文菜单操作的文件管理器,重要的几行是:
MimeType=image/*;
Exec=bash -c 'convert %F out.pdf'
确保您不会受到影响ImageMagick 安全策略“PDF”阻止转换。
使用 Gthumb(并非所有查看者都可以打印多种的图像到文件):
- 选择图像,右键单击它们并在 gThumb 中打开它们(它们将显示在文件浏览器中,而不是图像查看器中);
人们甚至可以在创建 pdf 之前重新排列图像!
只需拖放:
- 要打印它们,请再次选择它们,右键单击它们,选择“打印”;
- 选择保存文件的位置,然后在打印机列表中选择“打印到文件”。
其他可以将多张图像打印为 pdf 的图像查看器:
(顺便说一句,我也是另一个答案的OP和作者(现已签名user32012
):我在某个时候删除了我的帐户,现在我回来了。)