diddy0815
Goto Top

Bilder zu Pdf-Datei automatisch hinzufügen

Hallo zusammen,

ich suche nach einer Lösung um Arbeitsberichte mit den dazugehörigen Fotos automatisch zu verbinden.
Es werden in unregelmäßigen die Arbeitsberichte im Format Arbeitsberichtnummer.pdf und wenn Fotos mit gesendet worden sind Arbeitsberichtnummer_1.jpg( fortlaufend) in einen Ordner geladen.
Zum Beispiel 508001.pdf, 508001_1.jpg, 508001_2.jpg, 508001_3.jpg
Das Ergebnis sollte jetzt nach dem starten von z.B. einem Script in einem anderen Order nur ein Pfd in diesem Fall mit 508001.pdf und als zusätzliche Seiten im Pdf die 3 Fotos. Die verarbeiteten Daten könnten danach gelöscht werden, müssen aber nicht.
Es müsste dabei auch berücksichtigt werden, das in diesen Ordner auch Pdf´s kommen, wo keine Bilder dabei sind. Das Ziel ist einen Ordner zu erhalten wo alle Arbeitsberichte enthalten sind und wenn Fotos dabei waren, als weitere Seiten eingefügt.

Ich suche schon sehr langende aber nichts womit ich es als automatischen Prozess ablaufen kann.

Vielleicht fällt euch eine eine Lösung ein,

Grüße Diddy0815

Content-ID: 481844

Url: https://administrator.de/contentid/481844

Ausgedruckt am: 24.11.2024 um 08:11 Uhr

95169
95169 04.08.2019 um 09:40:14 Uhr
Goto Top
Wenn die Bilder den gleichen Namen haben und am gleichen Ort sind, dann kannst du mit dem pdf24 etwas machen.

Einen Batch schreiben, welcher alle Files in ein neues PDF schreibt und dann die Original-Files archiviert.
Evtl. habe ich im Büro noch so einen Batch, muss am Montag mal schauen.

Sonst mal als Idee:
https://help.pdf24.org/de/foren/thema/command-line-problem-im-batch-druc ...
Diddy0815
Diddy0815 04.08.2019 um 09:55:10 Uhr
Goto Top
Wäre toll, wenn du die Batch findest. Super- Danke für die schnelle Antwort.
140447
Lösung 140447 05.08.2019 aktualisiert um 10:21:30 Uhr
Goto Top
Mit Powershell, pdftk und imagemagick (convert.exe) z.B. so
# Ordner mit pdfs und Bildern
$folder = "D:\Diddy0815"  
# Pfad zur pdftk.exe (https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)
$path_pdftk = "D:\pdftk\pdftk.exe"  
# pfad zur convert.exe ImageMagick (https://imagemagick.org/index.php)
$path_imagick_convert = "D:\imagemagick\convert.exe"  
# -------------------
$tmp = "$env:TEMP\$([io.path]::GetRandomFileName())"  
md $tmp -Force -EA SilentlyContinue | out-null

Get-ChildItem $folder -Include *.pdf,*.jpg -Recurse | group {$_.BaseName.split("_")} | ?{$_.Count -gt 1} | %{  
    $_.Group | ?{$_.Extension -eq '.pdf'} | move-item -Destination $tmp  
    $_.Group | ?{$_.Extension -eq '.jpg'} | %{  
        .$path_imagick_convert $_.Fullname "$tmp\$($_.BaseName).pdf"  
        remove-item $_.Fullname -Force
    }
    .$path_pdftk "$tmp\*.pdf" cat output "$folder\$($_.Name).pdf"  
    remove-item "$tmp\*.pdf" -Force  
}
95169
95169 06.08.2019 um 11:58:46 Uhr
Goto Top
Hatte etwas länger gesucht: bei mir war es ein Scanner, welcher keine PDFs machen konnte.
Der Scanner hatte Bilder-files mit der Endung xsm geliefert, maximal 20Seiten, entweder einseitig oder Doppelseitig.
Das Skript erledigte folgende Arbeiten:
- Files in ein PDF zusammenfassen
- File per Mail (blat) versenden
und anschliessend die ganze Geschichte in ein Archiv-Ordner verschieben

Bei uns lief es 1 x pro Stunde auf dem Server

Wir hatten damals dieses Tool verwendet, zusammen mit Blat: https://www.advancedreliablesoftware.com/advanced_command_line_image_to_ ...


Und das CMD-file:
SET ORDNER=c:\daten\ftp\Scan\PraxisIT\
set Benutzer=tony

if not exist "%ORDNER%%Benutzer%\praxisit_%Benutzer%.xsm" goto :einzelseiten  

:arbeit
set E-Datum=%date%_%time:~0,2%-%time:~3,2%-%time:~6,2%
c:\tools\blat262\full\blat -install 192.168.xxx.xxx xerox@xxxx.ch -port 25 
"C:\tools\AdvancedReliableSoftware\AdvancedCommandLineImageToPdf\aclimage2pdf.exe" -sd "%ORDNER%%Benutzer%\praxisit_%Benutzer%.xsm" "%ORDNER%%Benutzer%" 13 1 2  
ren "%ordner%\%Benutzer%\images.pdf" "append_%E-Datum%.pdf"  

c:\tools\blat262\full\blat text.txt -subject "Dokumente vom Xerox-Scanner" -attach "%ordner%%Benutzer%\append_%E-Datum%.pdf" -to txxxx@mxxxxx.net  
"c:\program files\7-zip\7z" a -r "%ORDNER%%Benutzer%\%Benutzer%_pdf_%E-Datum%.zip" "%ORDNER%%Benutzer%\*.pdf"  
"c:\program files\7-zip\7z" a -r "%ORDNER%%Benutzer%\%Benutzer%_org_%E-Datum%.zip" "%ORDNER%%Benutzer%\praxisit_%Benutzer%.xsm"  
move "%ORDNER%%Benutzer%\*.zip" "%ORDNER%archiv"  

del "%ORDNER%%Benutzer%\*.pdf"  
rd /s /q "%ORDNER%%Benutzer%\praxisit_%Benutzer%.xsm"  

if not exist "%ORDNER%%Benutzer%\praxisit_%Benutzer%001.xsm" goto :einzelseiten  

ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%001.xsm" "praxisit_%Benutzer%.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%002.xsm" "praxisit_%Benutzer%001.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%003.xsm" "praxisit_%Benutzer%002.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%004.xsm" "praxisit_%Benutzer%003.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%005.xsm" "praxisit_%Benutzer%004.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%006.xsm" "praxisit_%Benutzer%005.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%007.xsm" "praxisit_%Benutzer%006.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%008.xsm" "praxisit_%Benutzer%007.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%009.xsm" "praxisit_%Benutzer%008.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%010.xsm" "praxisit_%Benutzer%009.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%011.xsm" "praxisit_%Benutzer%010.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%012.xsm" "praxisit_%Benutzer%011.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%013.xsm" "praxisit_%Benutzer%012.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%014.xsm" "praxisit_%Benutzer%013.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%015.xsm" "praxisit_%Benutzer%014.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%016.xsm" "praxisit_%Benutzer%015.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%017.xsm" "praxisit_%Benutzer%016.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%018.xsm" "praxisit_%Benutzer%017.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%019.xsm" "praxisit_%Benutzer%018.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%020.xsm" "praxisit_%Benutzer%019.xsm"  

goto :arbeit

:einzelseiten
if not exist "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e.xsm" goto :ende  

ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e.xsm" "praxisit_%Benutzer%.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e001.xsm" "praxisit_%Benutzer%_e.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e002.xsm" "praxisit_%Benutzer%_e001.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e003.xsm" "praxisit_%Benutzer%_e002.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e004.xsm" "praxisit_%Benutzer%_e003.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e005.xsm" "praxisit_%Benutzer%_e004.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e006.xsm" "praxisit_%Benutzer%_e005.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e007.xsm" "praxisit_%Benutzer%_e006.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e008.xsm" "praxisit_%Benutzer%_e007.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e009.xsm" "praxisit_%Benutzer%_e008.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e010.xsm" "praxisit_%Benutzer%_e009.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e011.xsm" "praxisit_%Benutzer%_e010.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e012.xsm" "praxisit_%Benutzer%_e011.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e013.xsm" "praxisit_%Benutzer%_e012.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e014.xsm" "praxisit_%Benutzer%_e013.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e015.xsm" "praxisit_%Benutzer%_e014.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e016.xsm" "praxisit_%Benutzer%_e015.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e017.xsm" "praxisit_%Benutzer%_e016.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e018.xsm" "praxisit_%Benutzer%_e017.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e019.xsm" "praxisit_%Benutzer%_e018.xsm"  
ren "%ORDNER%%Benutzer%\praxisit_%Benutzer%_e020.xsm" "praxisit_%Benutzer%_e019.xsm"  

goto :arbeit

:ende
Diddy0815
Diddy0815 06.08.2019 aktualisiert um 20:49:47 Uhr
Goto Top
routerboard: Ich habe Deine Lösung heute nachgebaut, funktioniert einwandfrei. Super erklärt. Danke. 👍👍👍

Ein Problem habe ich noch: Das Powershell Skript würde ich gerne über eine Bat. Datei starten. Im Netz habe ich einige Varianten gefunden jedoch laufen, die nicht fehlerfrei auf einem Windows Server 2016. Alternative wäre noch das Ganze über ein VB Skript zu starten, dann könnte ich es über das CRM steuern.
Diddy0815
Diddy0815 06.08.2019 um 20:48:45 Uhr
Goto Top
senior-ipaq,:
Vielen Dank für die Mühe, ist für mich leider zu komplex. Da ich ja schon die PDFs habe und „nur“ die Fotos dazuhängen muß. War anscheinend ein enormer Aufwand das ganze zum Laufen zu bekommen. Das Tool ist sehr Interessant.
140447
Lösung 140447 06.08.2019 aktualisiert um 21:08:51 Uhr
Goto Top
Powershell -Executionpolicy ByPass -NoP -C "&'d:\ordner\script.ps1'"  
Diddy0815
Diddy0815 06.08.2019 um 21:28:22 Uhr
Goto Top
Danke auch das hat auf Anhieb funktioniert. Dankeschön!