# PDF mit Pdfbox lesen



## Ocean.Driver (27. Okt 2010)

Hallo allerseits,

Ich habe vor mit PDFBox ein PDF strukturiert auszulesen. Leider komme ich mit der Dokumentation nicht weiter

Hat hier irgendjemand eventuell schon Erfahrung damit?

Ich lade zunächst immer mit


```
PDDocument doc = PDDocument.load(path);
```

das ganze Dokument. Jetzt würde ich gern über Seitenindizies strukturiert auf den jeweiligen Text zugreifen, kriege das leider aber nicht so richtig hin. Weiß jemand wie das funktioniert? Die Beispiele helfen mir leider auch nicht weiter.


Danke schonmal im vorraus!


----------



## Sleepwalker (10. Nov 2010)

Moin,

hast du eine Lösung dafür gefunden? Ich versuche auch ein mehrseitiges PDF Dokument einzulesen und dann die erste Seite mit PDPageContentStream zu verändern. Leider bekomme ich dafür keine einzelne "PDPage" vom Dokument in die Hand.

Gruß,

Tobias


----------



## Sleepwalker (10. Nov 2010)

Sorry für den Doppelpost, ich habe jetzt zwar eine Seite "in der Hand", aber wenn ich die ändere, dann ist dort nur noch der Text und nicht mehr der originale Inhalt vorhanden.


```
PDDocument doc = PDDocument.load(fileFoo);
PDDocumentCatalog cat = doc.getDocumentCatalog();
List list = cat.getAllPages();
PDPage page = (PDPage) list.get(0);
PDFont font = PDType1Font.HELVETICA_BOLD;
PDPageContentStream cs = new PDPageContentStream(doc, page);
cs.beginText();
cs.setFont(font, 10);
cs.moveTextPositionByAmount(100, 761);
cs.drawString("Hans Wurst");
cs.endText();
cs.close();
doc.save("c:\\foo.pdf");
```

Hiernach ist die erste Seite, wie gesagt, leer. Außer dem hinzugefügten "Hans Wurst", das steht da ganz einsam und alleine.
Ich hätte aber gerne das "Hans Wurst" über dem originalen Inhalt....meinetwegen auch mit einem anderen Tool als PDFBox.

Gruß

PS: Das PDF hat leider keine Textfelder, so dass ich darauf angewiesen bin, den String an eine beliebige Position zu schrieben.

Edit: Ich hab's jetzt einfach mit Overlays gemacht. Is' zwar unschöner, aber geht wenigstens.


----------



## Sleepwalker (15. Nov 2010)

Morgen,

ich hätte jetzt auch eine Antwort für dich (falls die obige nicht geht):


```
PDDocument doc = PDDocument.load(fileFoo);
List<PDPage> list = doc.getDocumentCatalog().getAllPages();
PDPage page = (PDPage) list.get(0);
PDPageContentStream cs = new PDPageContentStream(doc, page, true, true);
...
cs.close();
```

Wichtig zum Editieren einer Seite ist das erste "true" im Konstruktor von PDPageContentStream. Das heißt nämlich, dass man Inhalte "anhängen" will. Ansonsten fehlt halt, wie vorher bei mir, der originale Inhalt.
Gruß,

Tobias


----------

