Die beste Möglichkeit, PDF-Dateien zu bereinigen, ohne die Dateigröße massiv zu erhöhen

521
Irregular User

Ich scanne viele A4-Notizen, die ich aufschreibe, aber viele meiner alten haben Heftlöcher darin. Einige dieser Scans haben auch kleine Unvollkommenheiten wie einen kleinen Punkt (Schmutz), der mich beim Lesen dieser PDF-Dateien wirklich stört.

Ich habe versucht, die Heftklammerlöcher durch die Bearbeitung zu entfernen, da sich die Klammerlöcher immer im selben Bereich befinden und ich die gleiche Bearbeitung auf mehrere Seiten anwenden kann. Dies hat jedoch das unglückliche Ergebnis, dass die Größe der PDF-Datei um das 7-Fache erhöht wird!

Wenn ich versuche, Schmutzpartikel durch Bearbeiten der PDF-Seite in Paint manuell zu entfernen, erhöht sich die Dateigröße ebenfalls dramatisch um etwa 2 MB pro bearbeiteter Seite.

Gibt es einen besseren Weg, um das zu tun, was ich tue?

Hier ist ein Beispiel für eine Seite eines solchen PDF. Auf dieser Seite möchte ich einige der Schmutzflecken auf der eigentlichen Seite entfernen, die Heftklammerlöcher oben links, die Lochlöcher links und die schwarze Leiste oben rechts.

2
Können Sie ein Beispiel für eine dieser PDFs angeben und den Fehler beschreiben, den Sie für diese PDF entfernen möchten? Ouroborus vor 8 Jahren 0
@Ouroborus Klar, ich habe es gerade am Ende des Beitrags bearbeitet. Irregular User vor 8 Jahren 0
Wie bearbeitest du ein PDF in Paint? Paint unterstützt nur Bildformate, nicht PDF. Donald Duck vor 7 Jahren 0
@DonaldDuck Für mich ist es nur ein Rechtsklick> Bearbeiten mit> Malen. Da es sich um Scans handelt, handelt es sich dabei um sehr viele Bildformate mit nicht bearbeitbarem Text (wenn die Handschrift ausreichend sauber ist, besteht eine gewisse Suchbarkeit). Irregular User vor 7 Jahren 0
@IrregularUser Normalerweise, wenn Sie dies mit einer PDF-Datei tun, sagt Paint `(Dateipfad) Paint kann diese Datei nicht lesen. Diese Datei ist keine gültige Bitmap-Datei oder das Format wird nicht unterstützt. Selbst wenn nur ein Bild in der PDF-Datei enthalten ist, macht es mir zumindest etwas aus. Donald Duck vor 7 Jahren 0
@DonaldDuck Es gibt einige Einstellungen, die Sie vorher vornehmen müssen, damit sich die Farbe in Farbe öffnet. Probieren Sie die Einstellungen> Inhaltsbearbeitung> Bildeditor aus und suchen Sie dann nach Farbe. Irregular User vor 7 Jahren 0

1 Antwort auf die Frage

1
nixda

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

  1. 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

  2. Ö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:\dirSie jedoch in Ihren eigenen Ordner, in den Sie die Dateien extrahiert haben

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -file "D:\dir\cleanPDF.ps1" 
  3. Öffnen Sie es mask.pngund ändern Sie es nach Ihren Bedürfnissen. Alle nicht transparenten Bereiche markieren die zu entfernenden Bereiche (ausgeblendet). Die Transparenz muss erhalten bleiben

  4. Klicken 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) 

Das sieht unglaublich aus. Eines - könnten Sie es auf eine andere Website hochladen? Ich habe Probleme mit Downloads, die nicht einmal aus Firefox / Chrome / starten, dh aus irgendeinem Grund. Irregular User vor 8 Jahren 0
@IrregularUser Link von ge.tt zu mega.nz geändert. Bitte versuche es erneut nixda vor 8 Jahren 0