PDFBox: Nach RegEx ganze Zeile

Diskutiere PDFBox: Nach RegEx ganze Zeile im Allgemeine Java-Themen Forum; Hallo, Ich lese mit PDFBox eine PDF Datei mit folgendem Pattern aus Pattern.compile("\s(([0-9]{5})[A-Z]?)\s"); In der PDF sthen mehrere Daten...

  1. ChrisMS
    ChrisMS Neues Mitglied
    Hallo,

    Ich lese mit PDFBox eine PDF Datei mit folgendem Pattern aus
    Pattern.compile("\s(([0-9]{5})[A-Z]?)\s");

    In der PDF sthen mehrere Daten drin, aber auch Tabellen mit folgenden Beispielwerten
    01100 1751 13 2.548,0 100,00 2.548,0 0,74 0,96 950 -22,92 1,9
    01101 1751 7 2.191,0 100,00 2.191,0 0,40 0,32 376 25,00 1,0
    01102 1751 8 808,0 100,00 808,0 0,46 2,94 343 -84,35 3,0

    Er findet also z.B. 01100 doch dann hätte ich gerne die gesamte Zeile.
    Wie komme ich von dem Pattern-Match auf die gesamte Zeile?


    Code (Java):
    public class PDFPatternSearch {

        public static void main(String[] args) {

            PDDocument pd;
            try {
                // PDF file  extracted
                File input = new File("C:\\filename.pdf");

                StringBuilder sb = new StringBuilder();
                pd = PDDocument.load(input);
                PDFTextStripper stripper = new PDFTextStripper();

                sb.append(stripper.getText(pd));

                Pattern p = Pattern.compile("\\s(([0-9]{5})[A-Z]?)\\s");

                Matcher m = p.matcher(sb);

                while (m.find()) {
                   
                    System.out.print(m.group());
                }

                if (pd != null) {
                    pd.close();
                }
            } catch (Exception e) {
                System.out.println("Error in PDFPatternSearch");
                e.printStackTrace();
            }
        }

    }
     
    Danke und Gruss
    Chris
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. VfL_Freak
    VfL_Freak Bekanntes Mitglied
    Moin,
    Was genau meinst Du? :confused:

    Dein Pattern matcht also genau das was soll, wenn ich dich richtig verstehe (in Deinem Beispiel die 01100) ... Du durchsuchst aber doch den gesamten Text!
    Warum liest Du nicht einfach Zeilenweise ein und setzt Dein Pattern dann auf jede einzelne Zeile an?
    Oder verstehe ich jetzt jetzt was völlig falsch ?

    Gruß Klaus
     
  4. ChrisMS
    ChrisMS Neues Mitglied
    Hi,
    du hast es scheinbar richtig verstanden :)
    Ich habe mich nur in den Ansatz "Dursuche das ganze Dokument und komm vom Treffer zur ganzen Zeile" verbissen.
    Das Zeilenweise auslesen sollte mit der PDFBox Libary aber auch möglich sein. Darauf das Pattern zu legen macht irgendwie Sinn ;-) Das war der Denkanstoß den ich brauchte. Danke.
    lg
    Chris
     
  5. VfL_Freak
    VfL_Freak Bekanntes Mitglied
    Da nich' für :)

    Leider kenne ich die LIB nicht und kann Dir da nix zu sagen, aber es sollte doch eine API geben, oder ??

    Gruß Klaus
     
  6. ChrisMS
    ChrisMS Neues Mitglied
    Der Ansatz hat aber so gepaßt. Danke.
    Ich teile das Ergebnis des PDFBox-Readers in ein Array,
    durchlaufe es und prüfe jede Zeile ob es mit dem Pattern matcht.

    Danke für den Denkanstoß.

    Code (Text):
     
    ....        
    Pattern p = Pattern.compile("(([0-9]{5})[A-Z]?)\\s");
           
                PDDocument document;      
                try {
                  document = PDDocument.load(filePDF);

                 //Instantiate PDFTextStripper class
                  PDFTextStripper pdfStripper = new PDFTextStripper();

                  //Retrieving text from PDF document
                  String text = pdfStripper.getText(document);

                  // Every line saved in a row of array
                  String[] textLines = text.split("\n");

                  for (String s : textLines) {
                       
                        // Matcher refers to the actual text where the pattern will be found
                        Matcher m = p.matcher(s);
       
                        //check if pattern matches and pattern is at first position
                        while (m.find() && m.start()==0) {
                            // group() method refers to the next number that follows the
                            // pattern we have specified.
                            System.out.print(m.group());
                       }
    ...
     
     
  7. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

PDFBox: Nach RegEx ganze Zeile - Ähnliche Themen

PDFbox boxable font awesome-webfont
PDFbox boxable font awesome-webfont im Forum Java Basics - Anfänger-Themen
PDFBox PDF im Browser öffnen
PDFBox PDF im Browser öffnen im Forum Allgemeines EE
Probleme mit Schriftarten PDFBox
Probleme mit Schriftarten PDFBox im Forum Allgemeine Java-Themen
Frage zu pdfbox und FileUtils
Frage zu pdfbox und FileUtils im Forum Allgemeine Java-Themen
PdfBox - mehrere Formularseiten
PdfBox - mehrere Formularseiten im Forum Java Basics - Anfänger-Themen
Thema: PDFBox: Nach RegEx ganze Zeile