Die iText Bibliothek enthält zwei Klassen, die es erlauben, HTML in iText Elemente zu übersetzen, HTMLParser und HTMLWorker. Der Parser ist gedacht für das Parsen von kompletten HTML Dokumenten, während der Worker benutzt werden sollte, wenn nur Auszüge von HTML Code eingelesen werden soll. Beide sind recht begrenzt in ihren Möglichkeiten, reichen aber aus für einfach formatierten Text (z.B. kursiver oder fetter Text, verschiedene Textfarben und -größen, hier die unterstützten HTML Tags). Der iText Autor empfiehlt andere Produkte, sobald die Ansprüche an die HTML2PDF Konvertierung steigen (sehr aussichtsreich scheint die Kombination aus iText zusammen mit dem Flying Saucer XHTML Renderer (Homepage des Flying Saucer Projekts).
Um nun einen String einfachen HTMLs zu parsen und in iText Elemente zu übersetzen, ist ein einfacher Aufruf der parseToList Methode des HTMLWorkers nötig.
htmlText = "<p><span style='font-size:6px'>Guten</span> <span style='color: rgb(255, 102, 0);'><strong>Tag</strong></span></p>"; bodyText = (ArrayList< Element >)HTMLWorker.parseToList(new StringReader(htmlText), null);
bodyText enthält nun eine Liste mit einem Paragraph, der aus zwei Chunks besteht, die jeweils die gesetzten Eigenschaften (Schriftgröße, Farbe) besitzen. Die Elemente der Liste können nun z.B. einem ColumnText (hier textCol) hinzugefügt werden.
for (Element element : bodyText) { textCol.addElement(element); }
Ein denkbarer Einsatzzweck wäre die Bearbeitung des PDF Inhalts vor dem Erzeugen des Dokuments im FCKEditor mit einem entsprechend auf einfache Textformatierungswerkzeuge begrenzten ToolbarSet.
Anmerkung zur Unterstützung der Textgröße (font-size): In der aktuellen iText Version 2.1.5 sorgt ein Bug dafür, dass die Schriftgröße auf 8px gesetzt wird, sobald die Eigenschaft “font-size” verwendet wird. Dieser Bug wurde mit Revision 3895 gefixt.