<#
.SYNOPSIS
    Sichert alle Adobe Acrobat Stempel (Custom Stamps) des aktuellen Benutzers.
.DESCRIPTION
    Kopiert den gesamten Inhalt des Adobe Stamps-Ordners (inkl. Unterordner wie Dynamic)
    in einen Zielordner. Die Struktur wird als "StampsBackup" abgelegt.
    Ein detaillierter Log wird in einer Datei "Adobe-Stamps-Backup.log"
    imselben Verzeichnis wie die Sicherung gespeichert.
.PARAMETER TargetPath
    Zielordner, in den die Sicherung geschrieben wird. Wird erstellt, falls nicht vorhanden.
.EXAMPLE
    .\Adobe-Stamps-Backup.ps1 -TargetPath "D:\Sicherung\AdobeStamps"
#>
param (
    [Parameter(Mandatory=$true)]
    [string]$TargetPath
)

# Funktion: Schreibt eine Log-Zeile mit Zeitstempel in die Log-Datei und auf die Konsole
function Write-Log {
    param (
        [string]$Message,
        [string]$Level = "INFO"
    )
    $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
    $logEntry = "$timestamp [$Level] $Message"
    # Log-Datei imselben Verzeichnis wie die Sicherung
    $logFile = Join-Path $TargetPath "Adobe-Stamps-Backup.log"
    # Stelle sicher, dass das Zielverzeichnis existiert
    if (-not (Test-Path $TargetPath)) {
        New-Item -ItemType Directory -Path $TargetPath -Force | Out-Null
    }
    # Schreibe in die Log-Datei (anhängen)
    Add-Content -Path $logFile -Value $logEntry
    # Gib auch auf der Konsole aus
    switch ($Level) {
        "WARN" { Write-Host $logEntry -ForegroundColor Yellow }
        "ERROR" { Write-Host $logEntry -ForegroundColor Red }
        default { Write-Host $logEntry -ForegroundColor Green }
    }
}

# Standardpfad zu den Adobe Acrobat Custom Stamps (Roaming / AppData)
# Entspricht %AppData%\Adobe\Acrobat\DC\Stamps
$adobeStampsPath = Join-Path $env:APPDATA "Adobe\Acrobat\DC\Stamps"

# Ziel-Unterordner innerhalb von TargetPath
$backupFolder = Join-Path $TargetPath "StampsBackup"

# 1. Prüfen, ob der Quellordner (Adobe Stamps) existiert
if (-not (Test-Path $adobeStampsPath)) {
    Write-Log "Der Adobe Stamps-Ordner wurde unter '$adobeStampsPath' nicht gefunden." "WARN"
    Write-Log "Falls noch keine eigenen Stempel erstellt wurden, existiert der Ordner noch nicht." "WARN"
    Write-Log "Erstelle eine Test-Marke in Adobe Acrobat -> Kommentar -> Stempel -> Eigene Stempel, damit der Ordner generiert wird, und wiederhole den Vorgang." "WARN"
    exit 1
}

# 2. Zielpfad erstellen, falls nicht vorhanden
if (-not (Test-Path $backupFolder)) {
    New-Item -ItemType Directory -Path $backupFolder -Force | Out-Null
    Write-Log "Der Sicherungsordner '$backupFolder' wurde erstellt."
}

# 3. Alle Stempel (PDF-Dateien und Unterordner) kopieren
try {
    # -Recurse kopiert Unterordner wie Dynamic, Droplist etc. mit
    Copy-Item -Path "$adobeStampsPath\*" -Destination $backupFolder -Force -Recurse -ErrorAction Stop

    # Anzahl der kopierten Dateien zählen für Rückmeldung
    $fileCount = (Get-ChildItem -Path $backupFolder -Recurse -File).Count

    Write-Log "Erfolgreich alle Adobe Stempel aus '$adobeStampsPath' nach '$backupFolder' gesichert."
    Write-Log "Kopierte Dateien: $fileCount"
}
catch {
    Write-Log "Fehler bei der Sicherung der Adobe Stempel: $_" "ERROR"
    exit 1
}
