CleanPDF (9 MB)
Ich habe ein kleines PowerShell-Skript namens CleanPDF zusammengestellt, um bestimmte Bereiche von PDF-Seiten stapelweise zu entfernen. Es müssen keine zusätzlichen Programme installiert werden. Es ist eine tragbare Lösung
Der Benutzer muss ein geeignetes Maskenbild einrichten, um dem Programm mitzuteilen, welche Bereiche entfernt werden sollen. Verwenden Sie Paint.net, Gimp, Photoshop oder was auch immer Sie benötigen, um die Maske zu bearbeiten und die Transparenz zu erhalten
PowerShell-Skript
# user variables $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Definition $pdfimages = "$scriptDir\pdfimages.exe" $convert = "$scriptDir\convert.exe" $composite = "$scriptDir\composite.exe" $mask = "$scriptDir\mask.png" $temp = "$enc:temp\cleanPDF" # function to remove certain areas from each PDF site according to mask.png function cleanPDF($file){ # check if temp folder exists. Maybe from a previous run. If yes, delete it if (Test-Path $temp){ Remove-Item $temp -Force -Recurse} # Create a new temp folder which is always empty New-Item $temp -ItemType Dir | Out-Null # Extract one JPG per PDF site and save them in temp folder & $pdfimages '-j' $file.FullName "$temp\image" # Iterate through each new image and process them Get-ChildItem "$temp\image-*.jpg" | foreach { # Remove unwanted areas from current JPG with the help of mask.png. Convert JPG to PNG to preserve transparency & $composite -compose dst-out "$mask" $_.Fullname -matte "$temp\$($_.BaseName)_result.png" # Convert PNG back to JPG so we can replace transparent with white areas. Without this JPG>PNG>JPG trick they would be black & $convert "$temp\$($_.BaseName)_result.png" -background white -alpha remove "$temp\$($_.BaseName)_result.jpg" } # combine all images back to a single pdf and append "_result" to the file name & $convert "$temp\image*_result.jpg" "$($file.Directory)/$($file.BaseName)_result.pdf" # Remove temp folder and work images Remove-Item $temp -Force -Recurse } # Iterate through each passed commandline argument ForEach ($path in $args){ # Get path as Powershell item $file = Get-Item $path # If file extension is .pdf, start CleanPDF function for this pdf If ($file.Extension.ToLower() -eq '.pdf') { cleanPDF $file } }
Verwendete Werkzeuge und Techniken
Das Skript verwendet die folgenden Tools von Drittanbietern, um verschiedene Aufgaben auszuführen
pdfimages.exe (im Xpdf-Projekt enthalten ), um alle PDF-Seiten als separate Bilder zu extrahieren. Aber warum sollten Sie pdfimages verwenden, wenn imagemagick auch PDF-Dateien in Bilder konvertieren kann? Der Vorteil von pdfimages ist, dass wir GhostScript nicht installieren müssen
pdfimages.exe -j C:\inputfile.pdf C:\outputfolder
composite.exe (wird im imagemagick-Projekt bereitgestellt ), um bestimmte vordefinierte Bereiche auszublenden
composite.exe -compose dst-out C:\mask.png C:\input1.jpg -matte C:\output2.png
convert.exe (wird im imagemagick-Projekt bereitgestellt ), um transparente Bereiche in weiße Bereiche umzuwandeln. Und alle verarbeiteten Bilder wieder zu einem einzigen PDF zusammenfassen
convert.exe C:\input2.png -background white -alpha remove C:\output3.jpg
convert.exe C:\input*.jpg C:\output.pdf
Wie benutzt man
Laden Sie diese ZIP-Datei herunter und entpacken Sie sie in einen Ordner Ihrer Wahl. Sie können die Warnung ignorieren. Die vorausgehende Site enthält schädliche Programme von Google Safe Browsing
Die ZIP-Datei enthält alle erforderlichen Dateien, sodass Sie nicht das Imagemagick-Paket (155 MB) oder das Xpdf-Paket (11 MB) herunterladen müssen.
cleanPDF.ps1
convert.exe
composite.exe
pdfimages.exe
mask.png sample.pdfÖffnen Sie Ihren sendto-Ordner ( Win+ R»shell: sendto) und erstellen Sie eine neue Verknüpfung. Nennen Sie es CleanPDF und geben Sie den folgenden Pfad als Zielpfad ein. Wechseln
D:\dir
Sie jedoch in Ihren eigenen Ordner, in den Sie die Dateien extrahiert habenC:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "D:\dir\cleanPDF.ps1"
Öffnen Sie es
mask.png
und ändern Sie es nach Ihren Bedürfnissen. Alle nicht transparenten Bereiche markieren die zu entfernenden Bereiche (ausgeblendet). Die Transparenz muss erhalten bleibenKlicken Sie mit der rechten Maustaste auf eine beliebige PDF-Datei und wählen Sie Senden an »CleanPDF . Ein neues PDF wird am selben Ort erstellt
Das OP- Muster . Beachten Sie, welche Teile jetzt entfernt werden:
sample.pdf (1,35 MB) sample_result.pdf (1,46 MB)