Powershell-Kommando gesucht als Ersatz für SED-Aufruf

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
kirchfritz
Beiträge: 169
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Powershell-Kommando gesucht als Ersatz für SED-Aufruf

Beitrag von kirchfritz »

Hallo,
ich habe zugegebenermaßen eine Nicht-Lazarus-Frage. Aber vielleicht gibt es hier jemanden, der mir weiterhelfen kann.
Mein noch ungelöstes Problem heißt: Ich soll aus einer PDF-Datei alle Annotationen entfernen!
Klingt eigentlich einfach.
Durch intensives googeln habe ich folgendes bash script gefunden:

Code: Alles auswählen

 
pdftk original.pdf output uncompressed.pdf uncompress
LANG=C sed -n '/^\/Annots/!p' uncompressed.pdf > stripped.pdf
pdftk stripped.pdf output final.pdf compress
 


Die erste Zeile "uncompressed" die original.pdf Datei
Die zweite Zeile ruft "sed" auf und erstellt aus der uncompressed.pdf die stripped.pdf Datei
Die dritte Zeile "compressed" die stripped.pdf und erstellt die output.pdf Datei

Leider befinde ich mich in einer Windows-Umgebung. Dort gibt es kein SED und SED FOR WINDOWS will ich auch nicht installieren/verwenden

Nun meine Frage: Kann mir jemand die zweite Zeile in PseudoCode übersetzen?
Kann mir jemand sagen, ob ich diesen SED-Aufruf auch mit einem Powershell-Kommando hinbekomme?
Oder könnte man diesen SED-Aufruf mit einem Freepascal-Programm ersetzen?
Falls ich den SED-Aufruf richtig interpretiert habe, werden alle Zeilen die /^\ /Annots/ enthalten nicht ausgegeben, alle anderen schon.

Vielen Dank
Fritz
Zuletzt geändert von kirchfritz am Fr 3. Apr 2020, 07:17, insgesamt 1-mal geändert.

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Powershell-Kommando gesucht

Beitrag von fliegermichl »

sed ist ein Scripteditor in Linux. Er arbeitet Zeile für Zeile die angegebene Datei ab und führt sog. regular expressions aus.
beim fpc ist eine regex unit dabei, mit der das auch geht. Hab ich selbst aber noch nicht verwendet.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Powershell-Kommando gesucht

Beitrag von Socke »

kirchfritz hat geschrieben:Falls ich den SED-Aufruf richtig interpretiert habe, werden alle Zeilen die /^\ /Annots/ enthalten nicht ausgegeben, alle anderen schon.


Müsste das nicht mit einem überschaubaren Aufruf von -match und -replace funktionieren?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

kirchfritz
Beiträge: 169
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Powershell-Kommando gesucht als Ersatz für SED-Aufruf

Beitrag von kirchfritz »

Ich habe den SED-Aufruf

Code: Alles auswählen

LANG=C sed -n '/^\/Annots/!p' uncompressed.pdf > stripped.pdf

neu interpretiert, und zwar so:

Code: Alles auswählen

Extrahiere alle Textzeilen, die mit der Zeichenkette "/Annots" beginnen.

Könnte das ein SED-Experte bestätigen?

Wenn ja, dann würde ich als Lösung den folgenden FINDSTR Befehl vorschlagen:

Code: Alles auswählen

findstr /v /c:"/Annots [" uncompressed.pdf >stripped.pdf


Was haltet ihr davon?

kirchfritz
Beiträge: 169
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Powershell-Kommando gesucht als Ersatz für SED-Aufruf

Beitrag von kirchfritz »

Und hier kommt mal, für alle Interessierten, meine BatchDatei.
Sie funktioniert bei mir bestens.
Voraussetzung ist allerdings, dass PDFTK installiert ist
Dateianhänge
RemovePDFAnnotations.bat
(992 Bytes) 122-mal heruntergeladen

Antworten