2016-08-09 362 views
0

Verwenden von Powershell zum Entfernen von Inhalten aus PDF, während das PDF-Format beibehalten wird.Verwenden von Powershell zum Entfernen von Inhalten aus PDF

Meine Aufgabe: Ich habe versucht, was wäre eine einfache Aufgabe, wenn die Dokumente nicht im PDF-Format waren. Ich habe eine Reihe von PDFs, die unerwünschte Daten enthalten, bevor der Großteil der verwendbaren Daten beginnt. Dies ist alles, was in den Dokumenten vor "% PDF" steht. Ein Skript, das alle gewünschten Daten abruft und in eine neue Datei exportiert, wurde benötigt. Dieser Teil war super einfach.

Das Problem: Die Daten, die exportiert werden, scheint korrekt formatiert zu sein, außer dass es nicht mehr als PDF geöffnet wird. Ich kann es in Notepad ++ öffnen und es sieht identisch mit einem aus, das manuell sauber war und funktioniert. Betrachtet man den Rohcode des Powershell-geänderten PDFs, so scheint es, dass die "Zeilen" viel kürzer sind, als sie sein sollten.

Ich verstehe das PDF-Format verwendet nicht wirklich Linien, so dass möglicherweise wo das Problem erstellt wird. Entweder wenn die Daten anfänglich in ein Array eingegeben werden oder wenn es geschrieben wird, wird das PDF-Format wahrscheinlich unterbrochen. Gibt es eine Möglichkeit, das Format der PDF-Datei beizubehalten, während sie geändert und dann gespeichert wird? Es ist wahrscheinlich der Fall, dass ich etwas Einfaches vermisse.

+0

"* Untersucht man den Rohcode des Powershell-PDFs, sieht es so aus, als wären die 'Zeilen' viel kürzer als sie sein sollten. *" - und was fehlt ihnen? – TessellatingHeckler

+0

Soweit ich weiß, ist es Leerraum. Die Codierung wird beibehalten und alle Zeichen erscheinen gleich. Ich bin mir sicher, dass sich noch etwas geändert hat. – KVB

+0

PDF-Dateistruktur enthält Verweise auf binäre Offsets relativ zum Start der Datei. Sie müssen sie also richtig analysieren [mit iTextSharp] (https://www.google.com/#q=itextsharp+pdf+read+write+) modify + stackoverflow + powershell) – wOxxOm

Antwort

0

Also wollte ich anfangen, iTextSharp zu betrachten und entschied mich, eine ältere Sprache zuerst zu versuchen, Winbatch. (blah!) Ich habe fast einen Bildschirmkratzer gemacht, um die Arbeit zu machen, aber die Scham, diesen Weg zu gehen, hat mich übertroffen. Also war die Funktionsbibliothek der nächste Halt.

Dies ist nur ein kleiner Klappentext, den ich ausspucke, ohne dass an dieser Stelle eine Fehlerüberprüfung oder Protokollierung stattfindet. All das wird später zusammen mit Dateisuchen hinzugefügt. Alles in allem gelingt es, alle unerwünschten Extras im PDF zu entfernen, aber das genaue Format beizubehalten, das von PDFs benötigt wird.

Jetzt, da ich eine Idee habe, wie das funktioniert, klingt ein Werkzeug, um dies in PS zu tun, mehr machbar. Es gibt eine PS-Funktion in der Wildnis namens Get-HexDump, die eine gute Grundlage sein könnte, um mich über Bits und Hex in PS zu informieren. Da dies in Winbatch funktioniert, gehe ich davon aus, dass es in AutoIt eine Entsprechung gibt und dass es in den meisten grundlegenden Sprachen reproduziert werden könnte.

Es scheint eine Menge Leute da draußen zu geben, die versuchen, crud vor dem Header und nach dem Ende ihrer PDF-Dokumente zu löschen. Hoffentlich hilft das, ich habe eine halbe Mühle mit dem Skript, das ich mische in. Ich könnte mit einer PS-Version aktualisieren, wenn ich mich entscheide, diese Route wieder zu gehen, und wenn ich mich erinnere.