img2pdf Bild Konverter

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert