Da ich gerade vor dem Problem saß, aus einem nicht als MIME gespeicherten RichText Feld HTML Content zu extrahieren und ein wenig gebraucht hatte, bis ich alles beisammen hatte, möchte ich meine Lösung teilen, damit Ihr ggf. weniger lange suchen müsst.

Die Anforderung war, aus einem als Notes RT gespeichertem Feld den Inhalt als anständig formatiertes HTML auszulesen. Es gibt dafür mehrere Ansätze, die aber für mich aus unterschiedlichsten Gründen nicht in Frage kamen.

  1. Auslesen über URI
    Mit folgender URI kann man den Inhalt eines RT Feldes auslesen (undokumentierte Funktion beschrieben von Carl Tyler):
    http://dominoserver/datenbank/ansicht/uid/feldname?openfield
    Gibt man diese URI im Browser ein, dann erhält man den vollständigen Inhalt eines RT Feldes als HTML angezeigt. Leider kam das für mich nicht in Frage, da ich ein OSGI Plugin entwickele und direkten Zugriff auf das Dokument per Java API hergestellt habe. Jetzt per URI zu operieren ist zwar möglich, aber ziemlich umständlich, da dann auch neu authentifiziert werden muss wegen des HTTP Zugriffs. Also musste ich nach einer anderen Lösung schauen.
  2. DominoDocument und DominoRichTextItem
    Mark Leusink hat in seinem Blog eine tolle Funktion präsentiert, die es mit einfachsten Mitteln erlaubt, den HTML Inhalt eines RT Feldes über die Java API auszulesen mit Hilfe der Klassen DominoDocument und DominoRichTextItem. Die Klasse DominoRichTextItem enthält eine Funktion getHTML(), die den Inhalt des RT Feldes mit einem Aufruf als HTML zurückgibt. Nun ist es leider so, dass die beiden Klassen nur in der XSP Umgebung zur Verfügung steht, nicht aber für mein OSGI Plugin oder innerhalb eines Java Agenten. Also fällt diese Lösung auch aus.

Ich habe mich dann hingesetzt und geschaut, was mit den Bordmitteln der Java API möglich ist. Nach einigem Fummeln habe ich dann eine Lösung gefunden, die schnell ist und meine Bedürfnisse voll erfüllt. Diese Lösung ist im Übrigen auch nach Lotus Skript übertragbar, falls der Bedarf existiert. Hier das Code Snippet:

Das Snippet geht davon aus, dass der Inhalt im RT-Feld als Notes RT gespeichert ist. Der Code kann dahingehend erweitert werden, das zu prüfen und nur bei Bedarf zu konvertieren. Diese Prüfung habe ich vorher gemacht. Falls der Inhalt bereits als MIME vorliegt, kann gleich mit dem Auslesen begonnen werden.