# PDFBox "Nicht genügend Speicher"



## witschi (10. Mai 2012)

Hey Leute,

ich bin inzwischen ziemlich ratlos und sehr stark am verzweifeln. Ich habe eine Applikation, die anhand bestimmter Daten ein PDF generieren soll. Dieses PDF sieht ähnlich aus wie ein Brief, mit Logo oben rechts, Anschrift oben links und einer Tabelle als Content. Also eigentlich sehr einfach. Anfangs habe ich angefangen das Ganze mit iText zu realisieren. Da ich die Applikation jedoch im gewerblichen Rahmen nutzen möchte und die Lizenzen für iText meines Erachtens einfach viel zu teuer sind, wollte ich auf eine andere Library umsteigen. Gesagt getan, nun erfolgt die Ausgabe mittels PDFBox von Apache. Das funktionierte Anfangs auch realtiv gut, jedoch bekomme ich beim Start von Adobe immer den Fehler "In der Schrift \"ArialMT\" ist der Wert für /Widths fehlerhaft.". Wenn das PDF 2-seitig wird, bekomme ich zusätzlich den Fehler "Nicht genügend Speicher." Angezeigt wird es trotzdem fehlerfrei.

Grundsätzlich habe ich nun 2 Fragen:

Hat jemand Erfahrung mit PDFBox und kann mir mit meinen Problemen helfen? (dafür würde ich natürlich mehr Code posten)
Oder sollte ich lieber eine andere Library wie z.B. FOP nutzen, um mein PDF zu generieren? Wichtig ist nur, dass es Lizenzfrei für gewerbliche Zwecke genutzt werden kann (oder zumindest nicht allzu teuer ist). Ich habe nur noch keine Erfahrungen mit anderen PDF-Librarys gemacht, sodass ich nun gerne auf eure Erfahrungen zurückgreifen würde. 

Schonmal vielen Dank.


----------



## RichardSchulze (10. Mai 2012)

Hi,

Ich habe in letzter Zeit auch nach einer Möglichkeit gesucht, um PDFs zu erstellen. Auch ich bin auf iText gestoßen. Soweit ich weiß steht diese Library bis Version 2.1.7 unter der LGPL und sollte daher auch bei komerzieller Verwendung unproblematisch sein. Ich bin jedoch kein Experte, was diese Dinge angeht, also sichere das lieber noch einmal ab.
Ich hoffe diese Info hilft dir weiter.


----------



## witschi (14. Mai 2012)

Ich hab meine PDF-Ausgabe inzwischen ein bisschen angepasst. Ich nutze nun eine andere Schriftart, wodurch der WIDTH-Fehler natürlich nicht mehr auftritt. Den "nicht genügend Speicher" Fehler bekomme ich allerdings nach wie vor nicht in den Griff. Ich habe 2 jpgs, die ich in das PDF einfüge, und zwar so:

```
PDXObjectImage logo = new PDJpeg(doc, new FileInputStream("logo.jpg"));
logo.setHeight(Math.round(x2d(38.25f)));
logo.setWidth(Math.round(x2d(45.0f)));
cs.drawImage(logo,x2d(135.0f),y2d(0.0f)-logo.getHeight());
```

mit folgenden Hilfsfunktionen:

```
static float x2d(float x) { return x/210*PAGE_WIDTH; }
static float x2dr(float x) { return x*210/PAGE_WIDTH; }
static float y2d(float y) { return PAGE_HEIGHT-y/297*PAGE_HEIGHT; }
```

sobald ich das einfügen der Images auskommentiere funktioniert alles einwandfrei. Aber bereits ein Bild reicht, dass ich wieder den Speicher-Fehler bekomme...

Irgendwelche Ideen?


----------

