Vielleicht kennen Sie das Problem: Sie haben eine Bilddatei, benötigen diese jedoch als PDF. In unserer Buchhaltung kommt das öfters vor, ein Photo, oder aus einer Banking-Software heraus. Aber das Steuerbüro akzeptiert nur PDF. Also muss das Image nach PDF konvertiert werden. Das ist natürlich gar kein Problem, beherrscht inzwischen jedes Betriebssystem. Doch vielleicht möchten Sie den Prozess automatisieren? Oder die Klicks reduzieren, um den PDF-Konverter aus der Anwendungssoftware heraus anzustoßen?
Hier ist ein kleines Tool für Bash, das eine riesige Auswahl von Bildformaten nach PDF konvertieren kann:
######################################################## # img2pdf.bash - Convert many image formats to PDF # # More info https://cephei.blog/img2pdf-bild-konverter # ######################################################## #!/bin/bash delete_original=0 dpi=300 format="DINA4" plain=0 auto_orient="" verbose=0 usage() { echo "Usage: $(basename $0) [-d] [-i ] [-f ] [-p] [-v] file1 [file2 ...]" echo " -d Delete file after conversion" echo " -i DPI value [300] for the converted PDF" echo " -f [DINA4], DINA3, DINA5, LETTER" echo " -p Plain, do not scale image" echo " -o Keep orientation (portrait/landscape)" echo " -v Verbose, inform about progress" exit 1 } verbose_echo() { if [ "$verbose" -eq 1 ]; then echo "$@"; fi } supported_file() { if [ ! -f "$1" ]; then return 1; fi if [ -n "$(file "$1" |grep PDF)" ]; then return 1; fi if ! magick identify "$1" &>/dev/null; then return 1; fi return 0 } # Check for required commands if ! command -v convert &>/dev/null || ! command -v magick &>/dev/null || ! command -v bc &>/dev/null; then echo "ImageMagick not installed. Please install ImageMagick to use this script." echo "Hint: on most distributions, this package is named \"imagemagick\"." echo "(Should this appear although ImageMagick is installed, your distro misses \"bc\")" exit 1 fi if [ "$#" -eq 0 ]; then usage; fi while getopts ":di:f:pov" opt; do case $opt in d) delete_original=1 ;; i) dpi=$OPTARG ;; f) format=$(echo "$OPTARG" | tr '[:lower:]' '[:upper:]') ;; #ignore case p) plain=1 ;; o) auto_orient="-auto-orient" ;; v) verbose=1 ;; \?) echo "Invalid option: -$OPTARG" >&2 usage ;; :) echo "Option -$OPTARG requires an argument." >&2 usage ;; esac done shift $((OPTIND-1)) if [ "$#" -eq 0 ]; then usage; fi if [ $plain -eq 0 ]; then # Configure settings based on format and DPI, reference values for 300 DPI case "$format" in DINA4) xsiz=2480; ysiz=3508 ;; DINA3) xsiz=3508; ysiz=4961 ;; DINA5) xsiz=1748; ysiz=2480 ;; DINA6) xsiz=1240; ysiz=1748 ;; LETTER) xsiz=2550; ysiz=3300 ;; *) echo "Unsupported format: $format" >&2 exit 1 ;; esac scale_factor=$(echo "scale=8; 300 / $dpi" | bc) xsiz=$(echo "($xsiz / $scale_factor + 0.5) / 1" | bc) # Note: "/ 1" simulates floor ysiz=$(echo "($ysiz / $scale_factor + 0.5) / 1" | bc) verbose_echo "Conversion settings: DPI=$dpi, Format=$format, Scale Factor=$scale_factor" else verbose_echo "[plain] was set on command line, image(s) are not scaled" fi for file in "$@"; do if supported_file "$file"; then output_file="${file%.*}.pdf" if [ $plain -eq 0 ]; then convert "$file" $auto_orient -resize "${xsiz}x${ysiz}" -gravity center -extent ${xsiz}x${ysiz} -units PixelsPerInch -density $dpi "$output_file" else convert "$file" "$output_file" fi verbose_echo "Converted: $file -> $output_file" if [ $delete_original -eq 1 ]; then rm "$file" verbose_echo "Deleted: $file" fi else echo "Ignored: $file is either not a supported image format or does not exist." >&2 fi done
Alle von ImageMagick unterstützten Bildformate können mit diesem Script nach PDF konvertiert werden, und das ist eine schier unüberschaubare Anzahl von Formaten. Falls ImageMagick auf Ihrem System nicht verfügbar ist, das zugehörige Paket heißt „imagemagick“ unter Debian, Fedora und Arch.
Um unser Script zu installieren, kopieren Sie es entweder aus dem Code-Fenster oberhalb, oder Sie laden ein ZIP von unserem Server. img2pdf ist Freeware und Sie dürfen es nach Belieben verwenden.
Hinweis: Bei einzelnen Abschnitten des Codes wurde auf die Unterstützung von ChatGPT zurückgegriffen, aber OpenAI erhebt keinerlei Copyright-Ansprüche auf solche Code-Anteile.