PPT zu PNG PS Script
Hallo allerseits,
ich versuche mich gerade step by step einer Automatisierung zu nähern und würde gerne das geballte Schwarmwissen dieses Boards anzapfen.
Die Situation sieht wie folgt aus:
Diverse Mitarbeiter erstellen PowerPoint Folien in einem bestimmten Ordner. Für jeden Tag (Mo. - Sa.) je eine eigene Datei mit nur einer Folie.
Die Folien zb für KW 30 sind spätestens Donnerstag in KW 29 fertig.
Nun möchte ich Freitags eine Automatisierung die:
- Jede ppt Datei der Folgewoche öffnet (ppt´s sind schreibgeschützt. Das Script müsste also das Passwort absetzen können)
- ppt in png exportieren
- Irfanview Batch-Konvertierung starten (hier soll jedes png zugeschnitten und skaliert werden)
- Alle 6 png´s in einem Netzwerkshare ablegen
Da ich selbst kein Programmierer bin, kann ich mir den Ablauf nur theoretisch vorstellen. Wenn mir gesagt wird, dass das so nicht gehen kann, ok, dann akzeptiere ich das und suche eine andere Lösung.
Wenn aber jemand diesen Ablauf für programmierbar hält, wäre ich sehr dankbar, wenn derjenige Lust hat mich bei dem Script zu unterstützen.
Danke und Gruß
bmd
ich versuche mich gerade step by step einer Automatisierung zu nähern und würde gerne das geballte Schwarmwissen dieses Boards anzapfen.
Die Situation sieht wie folgt aus:
Diverse Mitarbeiter erstellen PowerPoint Folien in einem bestimmten Ordner. Für jeden Tag (Mo. - Sa.) je eine eigene Datei mit nur einer Folie.
Die Folien zb für KW 30 sind spätestens Donnerstag in KW 29 fertig.
Nun möchte ich Freitags eine Automatisierung die:
- Jede ppt Datei der Folgewoche öffnet (ppt´s sind schreibgeschützt. Das Script müsste also das Passwort absetzen können)
- ppt in png exportieren
- Irfanview Batch-Konvertierung starten (hier soll jedes png zugeschnitten und skaliert werden)
- Alle 6 png´s in einem Netzwerkshare ablegen
Da ich selbst kein Programmierer bin, kann ich mir den Ablauf nur theoretisch vorstellen. Wenn mir gesagt wird, dass das so nicht gehen kann, ok, dann akzeptiere ich das und suche eine andere Lösung.
Wenn aber jemand diesen Ablauf für programmierbar hält, wäre ich sehr dankbar, wenn derjenige Lust hat mich bei dem Script zu unterstützen.
Danke und Gruß
bmd
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 979525182
Url: https://administrator.de/contentid/979525182
Ausgedruckt am: 26.11.2024 um 06:11 Uhr
2 Kommentare
Neuester Kommentar
Servus bmd,
ja das ist möglich, hier mal ein erster Ansatz für dich zum Anpassen per Powershell dazu (Kommentare siehe Code)
Btw. den Schritt über das externe Tool Irfanview könnte man sich mit der Powershell auch sparen, die kann nämlich auch problemlos Bilder bearbeiten und verkleinern,/vergrößern .
Persönliche Anpassungen und Support dazu dazu gibt es von meiner Seite nur per PN
Grüße Uwe
ja das ist möglich, hier mal ein erster Ansatz für dich zum Anpassen per Powershell dazu (Kommentare siehe Code)
Btw. den Schritt über das externe Tool Irfanview könnte man sich mit der Powershell auch sparen, die kann nämlich auch problemlos Bilder bearbeiten und verkleinern,/vergrößern .
# source path for presentations
$ppt_source = 'D:\Presentationen'
# target share path
$networkshare ='\\Server\Share'
# open and edit passwords for presentations
$openpassword = '123456'
$editpassword = '123456'
# path to irfanview executable
$irfanviewpath = 'D:\iview\i_view64.exe'
# --------------------
Add-Type -A System.Drawing
# create powerpoint com object
$pp = New-Object -Com Powerpoint.Application
# disable dialogs
$pp.DisplayAlerts = 1
# for each pptx file in source folder
ls $ppt_source -Filter *.pptx -File | %{
# open presentation in protected view window (workaround to open file with password protection)
$docview = $pp.ProtectedViewWindows.Open($_.FullName,$openpassword)
# enter edit password (needed to export slides from presentation)
$doc = $docview.Edit($editpassword)
# if presentation has slides
if ($doc.slides.Count -gt 0 ){
$pngpath = "$ppt_source\$($_.Basename).png"
# export first slide to same path as presentation with *.png file extension
$doc.slides[1].Export($pngpath,'png')
# get size from png
$png = [System.Drawing.Image]::FromFile($pngpath)
# crop 50px from bottom
$w = $png.Width;$h = $png.Height - 50
# free png ressources
$png.Dispose()
# process png with irfanview (crop 50px from bottom, rotate right 90° resample and resize longest side to 1080px)
&$irfanviewpath "$pngpath" "/crop=(0,0,$w,$h)" /rotate_r /resample /resize_long=1080 /aspectratio /convert="$pngpath"
}
# close presentation
$doc.Close()
}
# enable dialogs
$pp.DisplayAlerts = 2
# cleanup
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($pp)
Stop-Process -Name POWERPNT -EA SilentlyContinue
# finally move png's to network share
move-item "$ppt_source\*.png" -Destination $networkshare -Verbose
Grüße Uwe