Bonjour à tous,

J'essaie de transformer une chaîne correspondant à un bloc HTML en fichier PDF.

Pour ça, j'utilise un HTMLWorker de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
com.lowagie.text.Document itextDocument = new com.lowagie.text.Document();
 
File attach = new File(Constantes.getString("mail_content_file"));
 
// creation of the different writers
PdfWriter.getInstance(itextDocument, new FileOutputStream(attach));
// we open the document for writing
itextDocument.open();
 
StyleSheet styles = new StyleSheet();
styles.loadTagStyle("body", "leading", "16,0");
 
List objects;
objects = HTMLWorker.parseToList(new StringReader("<html><head></head><body>"+message+"</body></html>"), styles);
 
for (int k = 0; k<objects.size(); ++k) {
	itextDocument.add((Element) objects.get(k));
}
 
itextDocument.close();
La variable "message" correspond à un bloc HTML, à l'intérieur d'un élément <div>. Cet élément contient des paragraphes (<p>), ainsi qu'un retour chariot (<br/>). Or, les paragraphes n'ont pas l'air d'être détectés, et apparaissent tous sur la même ligne, entraînant la superposition de plusieurs lignes (et ainsi un PDF illisible). Par contre le retour chariot est détecté.

Quelqu'un a-t-il une solution ? Ou juste une idée à la rigueur ?

Merci !

Résolu : Encore un problème auquel j'aurais du plus réfléchir avant de poser la question. La version de iText déjà présente dans mon projet datait de 2005. Avec la dernière version (2.1.7), la mise en page est correcte.