[Update]Lösungsansätze für Lesen von Muster aus einer Textdatei

Nachdem ich vor kurzem mal auf mein Problem mit der COM-Programmierung hingewiesen habe und ein paar Anregungen bekommen habe, bin ich nun einen Schritt weiter.

1. Ich habe eine Möglichkeit gefunden den Text aus einer PDF mit dem Tool pdftotext in eine Textdatei umzuwandeln. Bei meiner Testpdf (die übrigens auch als Referenz für zukünftige Auftragsbestätigungen genommen werden kann) hat das super hingehauen.
Dazu genügt es einfach folgenden Code zu verwenden:

pdftotext -layout datei1.pdf ausgabe1.txt

2. Nun sind die ABs zwar in einer grafischen Logik dargestellt, aber mit dem Computer nur mühsam zu verarbeiten. Doch für was gibt es denn Reguläre Ausdrücke? Richtig um Muster zu finden. Die von mir benötigen Daten folgen glücklicherweise immer einem bestimmten Muster. Zum Beispiel ein Datum ist immer gleich aufgebaut und die Artikelnummern. Doch leider sind RegEx sehr schwer zu kapieren. Durch eine Googlesuche nach "Regex Generator" bin ich auf diese tolle Seite gestoßen: txt2re
Sie mag auf den ersten Blick sehr verwirrend sein, doch auf den zweiten Blick ist es einfach nur genial. Man gibt oben eine Zeile ein und kann unten per Mausklick auswählen, welche Muster man verarbeiten möchte und das Ganze dann auch noch in einer von vielen verbreiteten Sprachen.

Den zweiten Punkt werde ich morgen noch ausführlich testen in VB.NET und dann hoffentlich endlich ein Ergebnis bekommen. Wenn ich dann diese Datei habe, wird ein Export nicht mehr allzu schwer werden.

3. Ich muss nun noch nach der Syntax zum Lesen einer Datei in VB.NET googlen und das schreiben in der Datei. In C und PHP wüsste ich es noch einigermaßen, aber grafisch aufbereitet ist das ja immer etwas anders.

//Update:
Nun hab ich es endlich auch geschafft, was zu coden:

Imports System.IO
Imports System.Text.RegularExpressions

Module Module1

    Dim objDateiMacher As StreamWriter
    Dim objDateiLeser As StreamReader
    Sub Pdf2Txt(ByVal pdfFile As String, ByVal txtFile As String)
        Dim arguments As String = "-layout" & " " & pdfFile & " " & txtFile
        'make sure to provide the path with the pdfFile and the txtFile
        System.Diagnostics.Process.Start("c:\xpdf\pdftotext.exe", arguments)
    End Sub
    Sub Main()
        Call Pdf2Txt("C:\xpdf\datei\eingabe.pdf", "C:\xpdf\datei\ausgabe.txt" )
        Dim txt As String
        objDateiLeser = New StreamReader("C:\xpdf\datei\ausgabe.txt" )

        Dim re1 As String = ".*?"           'Non-greedy match on filler
        Dim re2 As String = "(BL[0-9]{7})"    'Word 1
        Dim r As Regex = New Regex(re1 + re2, RegexOptions.IgnoreCase Or RegexOptions.Singleline)

        Do
            txt = objDateiLeser.ReadLine

            Dim m As Match = r.Match(txt)

            If (m.Success) Then
                Dim word1 As Group = m.Groups(1)

                Debug.WriteLine(word1.ToString)
            End If

        Loop Until objDateiLeser.EndOfStream

        objDateiLeser.Close()
        objDateiLeser = Nothing
        Console.ReadKey()
    End Sub

End Module

Nach ein paar Änderungen am Code dank diesem Forum hier, tut das Programm auch und der unten abgebildete Fehler ist endlich weg.

Doch nun hapert es noch ein bisschen an den Regulären Ausdrücken, doch Übung macht der Meister. Probieren geht über Studieren.

Magpie - Mit Werbetweets Geld verdienen

An und für sich finde ich Twitter recht nett. Doch welche Funktion es auch immer haben soll, es gibt immer genug Leute welche die eigene Timeline vollballern. So gesehen eignet es sich nicht als privater Chat (es kann ja sowieso jeder Nachfolger mitlesen). Man kann es aber teilweise als Ideenquelle nehmen um über Neuigkeiten zu erfahren. Zum Beispiel um zu sehen, wie es gerade beim Fussball steht. Vor allem dann interessant, wenn man sich kein ganzes Spiel anschauen möchte, weil die eigene Mannschaft gerade nicht so tollen Fußball spielt.

Doch wo Nachrichten sind, wird meistens auch immer über ein Zusatzverdienst nachgedacht. So auch die Idee von Magpie. Du twitterst ganz normal deine Tweets und alle 10 Tweets (oder erweiterbar auf bis zu 200 Tweets und dann erst wieder eine Werbung) kommt ein Werbetweet. Für diesen Werbetweet bekommst du dann je nach Anzahl der Follower ein paar Cent.
Du kannst ja mal vorbeischauen und schauen, wieviel du als Twitterer pro Monat verdienen kannst. Dazu musst du einfach deinen Twitternamen eingeben und dieser berechnet dann einen möglichen Verdienst.
Auszahlung ist ab 30 Euro via Paypal. Ich habe bis jetzt noch keine Auszahlung bekommen, aber der Alex hat schon eine bekommen.
Ich habe dieses Tool jedenfalls mal aktiviert. Falls sich jemand wundern sollte, warum so viel Werbung in seiner Timeline von mir stammt, dann habt ihr eine Erklärung dafür. Alle Werbetweets fangen mit "#werbung " an.

Twitter ist eine Art gefilterte Informationsquelle, nicht mehr und nicht weniger. Da dürfte diese Art von Werbung nicht besonders störend sein. Ansonsten hab ich halt weniger Follower auf der Liste. Es gibt ja noch unbeworbene Kanäle wie ICQ, E-Mails und meinen Blog (naja gut der eine Banner ist ja nun nicht sooo schlimm, oder?) und die gute alte Snailmail, Telefon und Handy.

[Gesucht] Hilfe für COM Programmierung

Nachdem ich mich mit Flash noch nicht richtig beschäftigen konnte, kommt schon wieder die nächste Herausforderung: COM-Schnittstellenprogrammierung

Der grobe Ablauf:
1. Text aus einer PDF (eine Auftragsbestätigung mit Terminen und Preisen vom Lieferant) in ein lesbares umwandeln, so dass ich die Daten per Skript bearbeiten kann.
2. Per COM-Zugriff eine Liste von den offenen Bestellungen beim Lieferanten aus der Warenwirtschaft auslesen.
3. Liste mit den Positionen aus der Warenwirtschaft mit den Auftragsbestätigungsdaten abgleichen und somit eine Liste mit neuen Lieferterminen und gegenfalls Preisen erstellen
4. Die fertige Liste dem Bearbeiter anzeigen und mit OK zurück in die Warenwirtschaft einspielen.

Punkte 2-4 kann ich recht logisch nachvollziehen, da ich öfters mit der internen Import/Export Schnittstelle arbeite und somit es nicht als großes Problem ansehe. Bei den Import/Export muss man ja auch immer die entsprechenden Feldnamen auswählen und zuordnen.

Nun mal eine Frage an euch: Welche Sprache empfiehlt sich für COM-Programmierung?
Ich dachte mal Visual Basic.NET, Windows Scripting Host, oder eben das VBA was im Ecxel enthalten ist. Da ich so oder so eine neue Sprache lernen muss, wäre mir eine grafische Oberfläche sehr recht. Der Kollege soll später eine GUI vor sich haben um den Pfad zur Auftragsbestätigung des Lieferanten angeben zu kommen, ansonsten nur OK. Die Programmlogik soll automatisch ablaufen.

Kennt sich jemand mit VB, VBA und PDF Bearbeitung aus? Es gibt ja auch Tools wie PDFtoText, aber damit komm ich in dem Fall nicht gut weiter. Mir wäre es recht, wenn ich einen bestimmten Bereich definieren könnte, der als Tabelle bearbeitet werden soll.

Hat jemand dazu eine Idee?