要将多个图像转换为 pdf,此脚本将对文件夹内的所有图像执行此操作:
#!/bin/bash
#
for f in *.png; do
convert ./"$f" ./"${f%.png}.pdf"
done
Run Code Online (Sandbox Code Playgroud)
但每个图像都会转换为单独的文件。
可以将所有图像转换为一个 PDF 吗?
小智 1
来源在这里,从任何文档集生成 PDF 文件,而不仅仅是图像。
\n\n从上述来源:
\n\n\n\n\n主要原理
\n\n当您想从多个文档生成多页 PDF 文件时,您需要执行以下几个步骤:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nSort of all input documents in alphabetical order\nConvert them to some temporary PDF files\nAssemble all temporary PDF documents to a final multi-pages PDF document.\n应根据输入文档的 mimetype\n 将输入文档转换为临时 PDF 格式:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nImage files (jpg, png, tiff, \xe2\x80\xa6)\nPlain text files (txt)\nLibre Office & Open Office documents (odt, ods, \xe2\x80\xa6)\nMicrosoft Office files (doc, docx, xls, xlsx, ppt, pptx, \xe2\x80\xa6)\n根据输入文档类型,应使用特定工具\n 转换为 PDF:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nconvert (from ImageMagick) for image files\nunoconv for Libre Office, Microsoft Office and plain text files\n将所有输入文档转换为一些临时 PDF 文件后,\n 最终文档组装将使用 GhostScript 完成。这个强大的工具\n允许:
\n\nRun Code Online (Sandbox Code Playgroud)\nmerge multiple PDF documents\noptimize final file size\n
对于 Nautilus 和 Gnome,请参阅上述链接的更多详细信息,其中包括更多用于自动化所需流程的脚本。我使用了更有限的方法,因为该解决方案针对 Gnome 和 Nautilus 进行了简化,而我主要使用 KDE 和 Dolphin。
\n\n该解决方案给出了问题中要求的结果,但也旨在应用于文本文档和 pdf(图像旁边)并将它们全部合并到最终的 pdf 中。
\n\n文件按字母顺序集成到输出 pdf 中。
\n\n最终的上下文菜单命令也可以应用于包含所有要合并的文件的文件夹。
\n\n该解决方案还包括一些GUI功能。
\n\n所以:
\n\nsudo apt-get install imagemagick unoconv ghostscript zenity libfile-mimeinfo-perl\nRun Code Online (Sandbox Code Playgroud)\n\n使用gedit或其他文本编辑器:
gedit ~/.config/pdf-generate.conf\nRun Code Online (Sandbox Code Playgroud)\n\n并粘贴此:
\n\n[general]\ncompression=95\ndensity=200\nRun Code Online (Sandbox Code Playgroud)\n\n因此,如果您想修改任何默认参数,只需在运行该工具之前编辑此文件即可。
\n\n负责 PDF 生成 k=job 的主脚本应放置在/usr/local/bin/pdf-generate. 有关主脚本的内容,请参阅源链接。(也在这里。)
您可以从命令行安装主脚本及其配置文件:
\n\n# mkdir --parents $HOME/.config\n# wget --header=\'Accept-Encoding:none\' -O $HOME/.config/pdf-generate.conf https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/pdf/pdf-generate.conf\n# sudo wget --header=\'Accept-Encoding:none\' -O /usr/local/bin/pdf-generate https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/pdf/pdf-generate\n# sudo chmod +x /usr/local/bin/pdf-generate\nRun Code Online (Sandbox Code Playgroud)\n\n要将此 PDF 生成工具完全集成到您的桌面环境中:
\n\ngedit /usr/share/applications/pdf-generate.desktop.\nRun Code Online (Sandbox Code Playgroud)\n\n请参阅 Gnome/Nautilus 集成以及自动下载和安装的链接。一个稍微简化和调整的版本,以满足我的 KDE 需求:
\n\n [Desktop Entry]\nType=Application\nExec=pdf-generate\nHidden=false\nNoDisplay=false\nIcon=pdf\nKeywords=pdf;generate;image;office;document;merge\nStartupNotify=true\nName[en_US]=Generate PDF document\nName[en]=Generate PDF document\nName[C]=Generate PDF document\nName[fr_FR]=G\xc3\xa9n\xc3\xa9ration d\'un PDF\nComment=Tool to merge a set of documents to a PDF file.\nComment[en_US]=Tool to merge a set of documents to a PDF file.\nComment[fr_FR]=Outil de concat\xc3\xa9nation de documents en un fichier PDF.\nMimeType=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;\nCategories=GNOME;GTK;Graphics;Conversion;Utility;\nRun Code Online (Sandbox Code Playgroud)\n\n要获得完整的桌面集成,应该可以通过文件管理器上下文菜单中的自定义操作使用此 PDF 生成工具。
\n\n对于 Nautilus,您需要在位于下面的 .desktop 文件中声明新的自定义操作~/.local/share/file-manager/actions(请参阅内容链接)。对于 Dolphin/KDE,它的格式为~/.kde/share/kde4/services/ServiceMenus/. 因此,我做了:
gedit ~/.kde/share/kde4/services/ServiceMenus/pdf-generate.desktop\nRun Code Online (Sandbox Code Playgroud)\n\n内容:
\n\n[Desktop Entry]\nActions=pdf-generate\nEncoding=UTF8\nIcon=pdf\nMimeType=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\nServiceTypes=KonqPopupMenu/Plugin\nType=Service\n\n\n[Desktop Action pdf-generate]\nExec=pdf-generate %F\nIcon=pdf\nName=Create pdf file\nRun Code Online (Sandbox Code Playgroud)\n\n重新登录后,选择文件时会出现上下文菜单选项,如源链接中所示。对于我的 KDE/Dolphin 配置,如果所选文件具有相同的扩展名,则这适用于它们。否则,最好的方法是将所有需要的文件放在一个文件夹中,然后从该文件夹的右键单击上下文菜单中执行命令。
\n\n\n\n在包含 png、jpeg、pdf 和 odt 文件的文件夹上进行测试:
\n\n\n\n\n\n输出文件位于源文件夹中,名称为first_in_alphabetical_order-merged.pdf.