# PDF durchsuchen nach Schlüsselwort mit PDFBox



## karl_h (12. Januar 2009)

Hallo!

Ich habe ein kleines Problem, ich benutze folgenden Code, um ein PDF einzulesen und dieses seitenweise nach dem Tag <Seitenumbruch> zu durchsuchen.


```
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;


import java.util.List;

import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDPage;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;
import org.pdfbox.util.Splitter;
import org.pdfbox.pdfwriter.COSWriter;

import java.io.InputStream;
import java.io.FileOutputStream;

import org.pdfbox.exceptions.InvalidPasswordException;
import org.pdfbox.exceptions.COSVisitorException;





public class test {


	 	public static void main(String args[])
	 	{
	 		List documents = null;
	 		Splitter splitter = new Splitter();
	 		PDFParser parser;
	 		try {
	 			PDFTextStripper stripper = new PDFTextStripper();
	 			parser = new PDFParser(new FileInputStream(new File(
					"c:/Test.pdf" )));
	 			parser.parse();
	 			PDDocument doc = parser.getPDDocument();
	 			System.out.println("Gesamtanzahl an Seiten: "+doc.getNumberOfPages()); 	
	 			splitter.setSplitAtPage(1);
	 			documents = splitter.split(doc);
	 			System.out.println("Aufgeteilt in "+documents.size()+" Teile.");
	 			
	 			for (int i = 0; i < documents.size(); i++)
	 			{
	 				
	 				PDDocument doc2 = (PDDocument) documents.get(i);
	 				String textContent = stripper.getText(doc2);
	 				if(textContent.indexOf("<Seitenumbruch>")!=-1)
	 					{
	 					System.out.println("Ein Zeilenumbruch befindet sich auf Seite "+(i+1));
	 					}
            }
	
			} catch (FileNotFoundException e){
				System.out.println("File not found!");
			} catch (IOException e) {
				System.out.println("Error!");
			} 
	 	}
	 }
```

Das funktioniert soweit bestens, nur wenn das Dokument zu groß (mehr als 13 Seiten) ist, bricht es ab.

Als Fehler bekomme ich folgendes angezeigt:



> Gesamtanzahl an Seiten: 28
> Aufgeteilt in 28 Teile.
> Ein Zeilenumbruch befindet sich auf Seite 4
> Ein Zeilenumbruch befindet sich auf Seite 8
> ...



Hat jemand eine Idee woran das liegen könnte? Stöß die "List" an die Grenze (Größe)?

Vielen Dank schonmal.

Viele Grüße
karl_h


----------



## pizza1234 (12. Januar 2009)

Hallo,
laut Errorlog fehlt anscheinend eine Library.

Im PDFBox -Ordner ../external liegt eine "FontBox..jar", die muss mit in den BuildPath.
Dann sollte es funktionieren.

Grüße,
Peter


----------



## Billie (12. Januar 2009)

Also diese Exception bedeutet, dass er die Klasse "org.fontbox.afm.FontMetric" nicht im Klassenpfad finden konnte.

Hat PDFBox irgendwelche abhängigkeiten zu anderen Libraries od. hast du nicht alle JARs im Klassenpfad?


----------



## karl_h (12. Januar 2009)

Hallo!

Vielen Dank für die flotte Hilfe. Inzwischen haben ich die Libs für fontbox hinzugefügt. Ich bin jedoch etwas irritiert, dass es ohne fontbox-Lib mit wenigen Seiten klappt, hat aber mit vielen nicht?

Grüße
karl_h


----------



## Billie (12. Januar 2009)

Keine Ahnung wozu die Fontbox genau verwendet wird, ich könnte mir vorstellen, dass sie zur Unterstützung von speziellen Schriftarten herangezogen wird.

Je nachdem ob jetzt im PDF diese "speziellen" Schriftarten verwendet werden, wird die Library angesprochen od. nicht.


----------

