Wie kann ich in mehreren PDF Dokumenten suchen und ersetzen?

2 Antworten

Mit den gängigen Editoren geht das nur einzeln mit Öffnen der einzelnen Dateien...

Um so eine Stapelverarbeitung automatisch zu erledigen braucht es schon eines Skripts das automatisch alle PDF Dokumente eines bestimmten Pfades im Hintergrund öffnet, ändert und abspeichert...

Mir ist allerdings keines bekannt, das das macht.

Wenn Du das für die Schule brauchst - sollst Du vermutlich so ein Skript schreiben...oder ?

PDF ist eigentlich ein Ausgabeformat für Betrachter und Drucker. PDF Dokumente beinhalten (im Gegensatz zu HTML oder TeX) ein Renderprogramm (tats. Postscript), welches ausgeführt wird und dabei den Text auf die Seiten malt. Es besteht also aus Programmcode!
Und in vielen Dokumenten ist der Text ziemlich versteckt. So könnte theoretisch jeder Buchstabe einzeln mit x/y Koordinate auf der Seite positioniert werden, ohne daß die Buchstaben in einer definierten Reihenfolge stehen müssten. Auch steht der Text selten in ISO8859 oder UTF im File, sondern oft umkodiert und/oder komprimiert. Ein einfacher grep findet meist nichts sinnvolles.
Zum Glück ist das bei vielen PDFs nicht der Fall, aber es zeigt schon, warum Editoren mit manchen Dokumenten so ihre Schwierigkeiten haben. Im worst-case muss der Editor selber die Renderanweisungen nachvollziehen, um zusammenhängende Worte anhand der Position auf der Seite Wortgrenzen zu erkennen.
Es kommt also ziemlich auf die konkret vorliegenden PDFs an.
Einzelne Buchstaben zu ersetzen (Frage: warum) wird schwierig, da die Buchstaben auch in den Anweisungen vorkommen. Ganze Worte zu finden/ersetzen kann auch schwierig werden, da selbst wenn sie als zusammenhängende Worte gefunden werden, u.U. die Positionierung des nachfolgenden Textes meist angepasst werden muss.
Ich sehe Dein anliegen daher eher pessimistisch. Entweder Du hast Gück, und es geht um einfach strukturierte Dokumente, oder aber Du brauchst ein ganzes Framework und ein relativ komplexes Programm, welches das Dokument einliest, eine komplette Repräsentation des Dokumentbaums aufbaut, diesen manipuliert und dabei die Positionen korrekt aktualisiert und dann PDF wieder rausschreibt. Solche Frameworks gibt es, aber es ist sicher mehr als ein paar Tage Arbeit, das umzusetzen. Als Smalltalker kenne ich das pdf4smalltalk Paket; aber es gibt auch vergleichbare Pakete für Java und andere Programmiersprachen.