Autor Thema: HTML in ein RT-Feld rendern  (Gelesen 3820 mal)

samWare

  • Gast
HTML in ein RT-Feld rendern
« am: 12.08.09 - 16:18:35 »
Hallo Leute!

Ist es möglich (ohne einen eigenen Paraser zu schreiben) HTML ins RichText Format zu bekommen? Also nicht nur stur den CodeText, sondern mitsamt der Formatierungen usw..

Bitte um schnellstmögliche Antwort! Danke schonmal..

mfg Sam
« Letzte Änderung: 07.09.09 - 15:04:03 von samWare »

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: HTML in ein RT-Feld rendern
« Antwort #1 am: 12.08.09 - 16:29:12 »
Im Front-End ist dies über "Datei" - "Importieren" - "HTML-Datei" relaativ einfach möglich (alterntiv kann man natürlich auch den entsprechenden Formelbefehl oder die entsprechende LS-Funktion verwenden.

Gruß

André

samWare

  • Gast
Re: HTML in ein RT-Feld rendern
« Antwort #2 am: 12.08.09 - 16:34:48 »
Das mit dem Frontend Import kenn ich schon... Ich muss das ganze aber Code-Technisch verarbeiten. Währe nett wenn du eine einschlägige Funktion/Klasse kennen würdest. Welche "entsprechende" LS-Funktion meinst du?
« Letzte Änderung: 12.08.09 - 16:40:40 von samWare »

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: HTML in ein RT-Feld rendern
« Antwort #3 am: 13.08.09 - 10:42:37 »
Die LS-Funktion heißt uidoc.import(..) - der Cursor muss dabei aber im Frontend in einem bearbeitbaren Richtext-Feld sein (eigentlich auch logisch).

Gruß

André

samWare

  • Gast
Re: HTML in ein RT-Feld rendern
« Antwort #4 am: 13.08.09 - 11:14:55 »
Leider nicht das wonach ich suche. Ich muss das ganze in ein Item Lesen, und das im Back-End. Mein Ansatz war mit einem Dummydocument und Berechnetem Text zu arbeiten der als passthruHTML gemarkt ist. Dieser berechnete Text in Form "passthruHTML" liest den HTML Code aus Feld "text" aus, welches versteckt ist und ebenfalls in der Form liegt. Dieses Feld befülle ich dann mit Code, speichere das Dummydoc zwischen und render dann das Dokument in ein RT-Item. Funktioniert aber leider nicht da er den Text anscheinend nur im Front-End berechnet. :(

Auch das "passthruHTML" Dokument nochmal über ne View zu öffnen und zu rendern bringt keinen Erfolg.

Hier mal mein Simpler TestCode

Code
Sub Click(Source As Button)
	
	'Render HTML Code to RT-Item
	
	Dim session As New NotesSession
	Dim workspace As New NotesUIWorkspace
	Dim db As NotesDatabase
	Set db = session.CurrentDatabase
	Dim doc As NotesDocument
	Dim doc2 As New NotesDocument(db)
	
	
	Set doc = db.CreateDocument
	doc.Form = "renderHTML_to_RT_with_passthrouHTML"
	Call doc.Save(True, False)
	
	'Injezieren des HTML Codes
	
	Dim inject As String
	inject = "<b>hallo</b>"
	
	doc2.Form = "passthruHTML"
	doc2.text = inject
	Call doc2.Save(True, False)
	
	Dim vw As NotesView
	Set vw = db.GetView("passthruHTML")
	
	Dim doc3 As NotesDocument
	Set doc3 = vw.GetFirstDocument
	
	Dim item As New NotesRichTextItem(doc, "Body2")
	Dim ok As Variant
	
	ok = doc2.RenderToRTItem(item)
	
	Call doc.CopyItem(item, "Body")
	
	Call doc.Save(True, False)
	
End Sub

Der Code Workt soweit. Wenn ich das Feld "text" nicht mehr verstecke rendert er mir das wunderschön. (also den Text aus "text"^^)
Im Frontend tut der berechnete Text auch das was er soll. Welche möglichkeiten giebt es noch den HTML stuff in ein RT-Item zu rendern?
« Letzte Änderung: 13.08.09 - 16:16:41 von samWare »

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: HTML in ein RT-Feld rendern
« Antwort #5 am: 13.08.09 - 13:43:55 »
Du kannst das HTML in ein MIME-Entity schreiben und somit auch von Notes wieder in ein RT-Item konvertieren lassen.

Es ist aber nicht ganz so einfach, da diese MIME-Dinger relativ komplex sind. (Hab hierzu schon einige Beiträge gepostet, so dass ich mir eine genauere Erklärung vorerst spare)

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

samWare

  • Gast
Re: HTML in ein RT-Feld rendern
« Antwort #6 am: 13.08.09 - 14:49:06 »
Hoffentlich nur vorerst. Wenigstens ein ansatz, bin mal gespannt ob ich das realisieren kann. Danke dir!

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: HTML in ein RT-Feld rendern
« Antwort #7 am: 14.08.09 - 10:26:25 »
Diesen Beitrag hab ich gemeint:
http://atnotes.de/index.php/topic,43563.0.html
Da sollte alles wichtige drin stehen. Bei weiteren Fragen einfach hier posten.
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

samWare

  • Gast
Re: HTML in ein RT-Feld rendern
« Antwort #8 am: 14.08.09 - 11:37:28 »
Danke dir Roland, ich hab das gestern dann innerhalb von 10 Minuten hinbekommen. Danke nochmal für den MIME Tipp! PS: War eig. überhauptkein Act. Was meinst du mit Komplex?  :-:

Mein Testcode (der Funkt) sieht so aus:

Code
Sub Click(Source As Button)
	Dim session As New NotesSession
	Dim ws As New NotesUIWorkspace
	Dim db As NotesDatabase
	Set db = session.CurrentDatabase
	Dim uidoc As NotesUIDocument
	Dim doc As NotesDocument
	
	session.ConvertMime = False 'noch nicht in RT Rendern
	
	Dim Docname As String
	Docname =  Cstr(Inputbox("Geben Sie die den Namen des Documents ein")) 
	
	Set doc = New NotesDocument(db)
	doc.Form = "frmHTML_to_RTItem"
	doc.Docname = Docname
	
	Dim stream As NotesStream
	Set stream = session.CreateStream
	Call stream.WriteText(Cstr(Inputbox("Geben Sie den zu Rendernden HTML Code ein")))
	
	Dim mime As NotesMimeEntity
	Set mime = doc.CreateMIMEEntity
	Call mime.SetContentFromText(stream, "text/html", 1728)
	
	Call doc.Save(True, True)
	session.ConvertMime = True	
	
	Messagebox("HTML erfolgreich gerendert")
End Sub

Funktioniert wunderbar :)  :-*

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: HTML in ein RT-Feld rendern
« Antwort #9 am: 17.08.09 - 11:26:44 »
hmm, schaut wirklich einfach aus.   ;D Was ich aber auf den ersten Blick vermisse ist ein CloseMimeEntities vor dem Save (Mir ist da immer wieder mal der Client abgestürzt)

Kompliziert wird es dann, wenn du Bilder mit einbinden willst oder dieses Feld später in einer Maske bearbeiten willst (wobei letzteres evtl sogar so geht wie du es gemacht hast)

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz