ankhmorpork
Goto Top

Powershell, PDF

Hallo zusammen,

ich komme mit der Suche nicht weiter ...

Situation: ca. 2000 PDF-Dateien (Downloads von E-Mails). In der ersten Zeile der PDF-Dateien steht der Betreff. Diesen gilt es zu extrahieren und in eine Datei zu schreiben.
Windows 10, Powershell 5.0
Die PDF-Dateien wurden über einen E-Mail-Provider generiert - keine weitere Info verfügbar.

Mein Problem: Ich kann genau an diese Zeile nicht herankommen (mit Powershell). Das cmdlet Get-Content ist hier allem Anschein nach nicht das Werkzeug der Wahl.

Es sollen keine Tools verwendet werden. Ein PDF-Reader ist ebenfalls keine Option. Es muss mit Bordmitteln gelöst werden - ohne Wenn und Aber.

Hat jemand einen Tritt für mich?


Gruß in die Runde aus meinem Brückentag

Ankh

Content-ID: 350594

Url: https://administrator.de/contentid/350594

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

SeaStorm
SeaStorm 02.10.2017 um 14:07:47 Uhr
Goto Top
hi

IMHO wirst du mit absoluten Bordmitteln nicht weit kommen.
Du brauchst eine Library wie iTextSharp, um PDFs auslesen zu können.
AnkhMorpork
AnkhMorpork 02.10.2017 um 14:16:24 Uhr
Goto Top
Zitat von @SeaStorm:

hi

IMHO wirst du mit absoluten Bordmitteln nicht weit kommen.
Du brauchst eine Library wie iTextSharp, um PDFs auslesen zu können.

Danke dir!

Das hatte ich auch schon gelesen. Aber das ist- wie ich ja geschrieben hatte - keine Option.

Schade sagt die Made ...
SeaStorm
SeaStorm 02.10.2017 um 14:40:45 Uhr
Goto Top
darf ich fragen warum eine Library nicht in Frage kommt? Reine Interesse
AnkhMorpork
AnkhMorpork 02.10.2017 um 14:47:15 Uhr
Goto Top
Zitat von @SeaStorm:

darf ich fragen warum eine Library nicht in Frage kommt? Reine Interesse

Es darf keine Software installiert werden. TABU!

Ist 'ne Vorgabe, an der ich nichts ändern kann. Die Dateien dürfen auch nicht woanders hin transferiert werden. Entweder das läuft auf diesem Rechner, oder ein armesSchwein muss bluten ...

Schönen 3. noch!
SeaStorm
SeaStorm 02.10.2017 um 15:04:59 Uhr
Goto Top
also streng genommen installierst du nix ;)
Du brauchst da nur eine DLL von ... und die kann sonst wo im Netzwerk liegen.

So Suche ich bei mir in PDFs nach einem String mit Rechnungsnummern


Add-Type -Path \\share\dlls\itextsharp.dll
$i = 1
Get-ChildItem "\\server\pdfs" -Filter *.* |   
Foreach-Object {
$reader = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList $_.FullName        

#for ($page = 1; $page -le $reader.NumberOfPages; $page++)
#{
    $strategy = new-object  'iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy'              
    $currentText = [iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader, 1, $strategy);
    [string[]]$Text = [system.text.Encoding]::UTF8.GetString([System.Text.ASCIIEncoding]::Convert( [system.text.encoding]::default  , [system.text.encoding]::UTF8, [system.text.Encoding]::Default.GetBytes($currentText)));      
#}
$Reader.Close();
$result = [regex]::matches( $text, '((RE|GS)\d{10})' ) | select -expa value  

[string]::Format(“{0};{1};{2}”,$i,$result,$_.FullName)

$text = ""  
$i++
}
colinardo
colinardo 02.10.2017 aktualisiert um 15:12:02 Uhr
Goto Top
Servus Ankh.
Zitat von @AnkhMorpork:

Zitat von @SeaStorm:

darf ich fragen warum eine Library nicht in Frage kommt? Reine Interesse

Es darf keine Software installiert werden. TABU!
Muss man bei iTextSharp beispielsweise nicht, es reicht die DLL irgendwo zu platzieren.

Beispiele dazu habe ich hier schon einige gepostet.
Skript zum Auslesen und Automatischen Versenden von E-Mails

Wenn du es mit Bordmitteln machen willst, das geht, ist aber einiger Aufwand da du quasi einen eigenen Textparser schreiben musst der den Text aus den Binärdaten extrahiert.

Bei Interesse gerne PN.

Grüße Uwe