Pdf

從多個(選定的)圖像中創建一個 pdf

  • January 12, 2022

要將多個圖像轉換為 pdf,此腳本將對文件夾中的所有圖像執行此操作:

#!/bin/bash
#
for f in *.png; do
 convert ./"$f" ./"${f%.png}.pdf"
done

但是每個圖像都被轉換成一個單獨的文件。

所有圖像都可以轉換成一個 pdf 文件嗎?

來源在這裡,從任何文件集生成 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中。

最後的上下文菜單命令也可以應用於包含所有要合併的文件的文件夾。

該解決方案還包括一些GUI功能。

所以:

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.

在此處輸入圖像描述

您可以使用以下-adjoin選項convert

convert -adjoin *.png out.pdf

此命令將生成一個pdf包含所有png圖像的文件。

引用自:https://unix.stackexchange.com/questions/263630