Puoi usare PowerShell! Poiché i moderni documenti di Office sono in realtà file ZIP contenenti principalmente file XML, possiamo manipolarli abbastanza facilmente senza fare affidamento su alcun componente di Office. Ho scritto questo script per te:
[CmdletBinding()]
Param(
[Parameter(Mandatory = $true)][string]$File,
[Parameter()][int]$Quality = 50
)
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.Drawing
$fs = New-Object System.IO.FileStream (Resolve-Path $File), 'Open'
$zip = New-Object System.IO.Compression.ZipArchive $fs, 'Update'
$zip.Entries | ? {$_.FullName -like 'ppt/media/*.png'} | % {
$s = $_.Open()
$img = [System.Drawing.Image]::FromStream($s)
$s.Position = 0
$codec = [System.Drawing.Imaging.ImageCodecInfo]::GetImageDecoders() | ? {$_.FormatId -eq [System.Drawing.Imaging.ImageFormat]::Jpeg.Guid}
$qualityprop = [System.Drawing.Imaging.Encoder]::Quality
$encodeparams = New-Object System.Drawing.Imaging.EncoderParameters 1
$encodeparams.Param[0] = New-Object System.Drawing.Imaging.EncoderParameter $qualityprop, $Quality
$img.Save($s, $codec, $encodeparams)
$s.SetLength($s.Position)
$s.Close()
}
$zip.Dispose()
Apre il file PPTX dato come archivio ZIP, trova ogni immagine PNG incorporata e converte l'immagine in JPG. Non aggiorna l'estensione del file all'interno dell'archivio, ma a PowerPoint sembra non importare (testato su PowerPoint 2016 su Windows 10). Se vuoi che tenti di lavorare con tutti i tipi di immagine (non ho testato altri formati), cambia questa linea:
$zip.Entries | ? {$_.FullName -like 'ppt/media/*.png'} | % {
A questo:
$zip.Entries | ? {$_.FullName.StartsWith('ppt/media/')} | % {
Salva lo script come .ps1
file, ad es. pptxjpg.ps1
. Se non lo hai già fatto, segui le istruzioni nella sezione Abilitazione script di il wiki del tag PowerShell . È quindi possibile eseguirlo da una richiesta di PowerShell in questo modo:
.\pptxjpg.ps1 C:\path\to\presentation.pptx
Richiede un parametro opzionale che specifica la qualità JPG, con impostazione predefinita a 50. Se vuoi risparmiare ancora più spazio, potresti specificare un valore più basso, in questo modo:
.\pptxjpg.ps1 C:\path\to\presentation.pptx -Quality 20
Quando ho testato questo ultimo comando, ha ridotto le dimensioni di una presentazione contenente uno screenshot ad alta risoluzione e un diagramma di dimensioni medie da 982 KB a 253 KB.