Les close() ne sont pas mal placés par rapport aux spécifications Java (Il y en a peut être des inutiles (celui sur du PDFWriter, puisque celui sur le Document devrait suffir). Maintenant, est-ce qu'il y a un "truc" spécial pour AIX, je n'en sais rien. Cela m'étonnerait quand même.
Je ne pense pas toutefois que cela vienne des close() : l'exception est soulevé par l'API IText, au moment du close() certes, mais se fait par rapport à l'état actuel de la page.
Personnellement, j'ai plusieurs code d'export de PDF que je fais tourner sur Windows et MacOSX, sans problème. Avec de légères différences par rapport au tiens. Essayes toujours pour voir.
Déjà, je ne créé par un PDFDocument, mais un Document (com.lowagie.text.Document). Est-ce que ça change quelque chose, je ne sais pas. Sinon, il y a 3 petites autres différences par rapport à ton code :
- Je n'ouvre mon Document qu'au besoin : j'ouvre toujours mon PDFWriter, mais j'ouvre mon Document que si j'ai quelquechose à écrire, et s'il n'est pas déjà ouvert évidemment. A chaque nouvelle page, je fais newPage(), sauf pour la première page (puisque il y' a l'appel de open()).
- Je ne ferme mon Document que si je l'ai ouvert (et je ferme toujours mon OutputStream) ;
- Si je ne mets rien explicitement dans une page (donc après tout open() ou newPage()), je fais pdfwriter.setPageEmpty(false) ;
Difficile de te mettre le code complet : il est un peu volumineux (un peu plus complexe que d'écrire juste du texte dans un PDF) et je n'ai pas le temps de le simplifier pour qu'il serve d'exemple clair et pertinent.
Partager