Kostenloses PDF-zu-Text-Programm

Nachdem ich vor einiger Zeit verzweifelt versucht habe, aus einer PDF-Datei den darin enthaltenen Text zu extrahieren, wollte ich euch nun einmal zeigen, wie man soetwas relativ einfach selbst realisieren kann.

Auf meiner Suche nach einer Lösung bin ich mehrfach über Implementationen gestoßen, die die gewünschte Funktionalität zwar bieten, aber entweder Geld gekostet hätten oder sich nicht für eine Automation hätten verwenden lassen.

Schlussendlich gelöst wurde es nun in Java unter Zuhilfenahme der Bibliothek PDFBox. Wer mich kennt, weiß, dass ich eigentlich ein Java-Kritiker bin, aber in diesem Fall war es nunmal die einfachste Lösung 😉 .
PDFBox scheint derzeit in ein Apache-Projekt überführt zu werden: es durchläuft gerade den Apache Incubator Prozess - es ist also zu hoffen, dass der Quelltext auch in Zukunft gepflegt werden wird.
Derzeit aktuell ist die Version 0.7.3 - diese scheint jedoch einigen Änderungen unterlaufen zu sein, die nicht vollständig durchdacht wurden. Deshalb empfehle ich vorerst, die Version 0.7.2 weiterzuverwenden.
Aus früheren Erfahrungen weiß ich, dass diese Lösung leider Probleme mit geschützten PDF-Dateien hat - für einfache Dokumente reicht sie jedoch allemal aus. Eventuell ändert sich dies ja, wenn die Bibliothek in Zukunft weiterentwickelt wird.

Kommen wir zur Implementierung: Nachdem ihr ein neues Projekt angelegt und die gerade besprochene Bibliothek zu dem Projekt hinzugefügt habt, müsst ihr zuerst ein paar Klassen importieren. Hier sind, alle, die benötigt werden:

1
2
3
4
import java.io.File;
import java.io.FileWriter;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;

Danach benötigt ihr noch die folgende Methode - diese kümmert sich um alles weitere. Vom Einlesen der PDF-Datei, über das Konvertieren bis hin zum Erstellen der Text-Datei ist dort alles enthalten:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private static void ConvertPDF2TXT(String APDFFile,
                                   String ATXTFile) {
  File LFile = new File(APDFFile);
  if (LFile.isFile()) {
    try {
      try {
        PDDocument LDocument = PDDocument.load(LFile);

        FileWriter LWriter = new FileWriter(ATXTFile);
        try {
          PDFTextStripper LStripper = new PDFTextStripper();
          LStripper.setStartPage(1);
          LStripper.setEndPage(LDocument.getNumberOfPages());
          LStripper.writeText(LDocument, LWriter);
        }
        finally {
          LWriter.close();
        }
      }
      catch(Exception e) {}
    }
    catch(Exception e) {}
  }
}

Die Verwendung sollte selbsterklärend sein - der erste Parameter ist der Name der existierenden PDF-Datei, der zweite Parameter ist der Name der zu erzeugenden Text-Datei. Der Ordner, in den die Text-Datei gespeichert werden soll, muss bereits existieren.

Ich hoffe, dass diese Minimallösung für den ein oder anderen hilfreich sein wird. Leider muss mit dem eigenen Programm die gesamte PDFBox-Library mitgeliefert werden - immerhin über 3MB.
Vielleicht findet sich ja jemand, der Lust hat, das ganze soweit zusammenzustellen und alle unnötigen Klassen zu entfernen, damit das Programm in einer einzigen JAR-Datei ausgeliefert werden kann. Falls sich jemand die Arbeit macht, würde ich mich über eine Information darüber freuen - zwecks Verlinkung 😉 .

Bis dahin wünsche ich viel Spaß mit dem eigenen PDF-zu-Text-Programm!
Textliche Grüße, Kenny

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.