HCL Notes / Domino / Diverses > Entwicklung
Richtext Inhalt an Webserver übergeben?
schroederk:
Hallo,
Ich habe eine recht einfache Notes-Datenbank, die nur zwei benötigte Felder enthält: Subject und Body. Dabei kann in einem Dokument das Body-Feld vom Typ Rich Text mehrfach vorkommen.
Auf das Body-Feld kann ich über den Browser einfach zugreifen und der Inhalt wird inklusive Bilder, Umbrüche und Text-Stile korrekt dargestellt:
--- Zitat ---https://mailserver/datenbank.nsf/All Documents/Eindeutiger-Titel/Body?OpenField
--- Ende Zitat ---
Wenn ich den Inhalt aber versuche über PHP und cUrl abrufen möchte, erhalte ich die Fehlermeldung: Unknown or unsupported protocol version
Der Aufruf eines Agenten in derselben Datenbank funktioniert mit demselben Code ohne Probleme.
Daher habe ich es mit einem Agenten versucht, scheitere aber wohl an meinen bescheidenen Programmierkenntnissen für Lotusscript. Das Print rtitem funktioniert nicht wegen "Type mismatch".
Außerdem sucht mein Script nach allen Richtext-Feldern, nicht nur nach Body (auch wenn bei mir sicher nur das Body-Feld vom Typ Richtext ist.
Wie kann ich den den kompletten Body (alle Body-Felder) inklusive der Text-Stile und der Bilder ausgeben, entweder als html oder gerne auch als RTF?
--- Code: --- Set view = db.GetView("All Documents")
Set doc = view.Getfirstdocument()
While Not(doc Is Nothing)
If doc.Subject(0) = subject Then
ForAll item In doc.Items
If item.Type = RICHTEXT Then
Set rtitem = item.GetUnformattedText()
Print rtitem
End If
End ForAll
End If
Set doc = view.GetNextDocument(doc)
Wend
--- Ende Code ---
Tode:
Dafür gibt es eine ganz einfache Methode:
--- Code: --- Set rtitem = docCalProfile.Getfirstitem("Body")
html = rtitem .Converttohtml()
--- Ende Code ---
schroederk:
--- Zitat von: Tode am 18.04.24 - 17:49:12 ---Dafür gibt es eine ganz einfache Methode:
--- Code: --- Set rtitem = docCalProfile.Getfirstitem("Body")
html = rtitem .Converttohtml()
--- Ende Code ---
--- Ende Zitat ---
Vielen Dank, damit bekomme ich schonmal den Text-Inhalt, aber kann ich auch die Bilder bekommen? Diese werden mir als Broken Link angezeigt.
Ich habe versucht, die Images als EmbeddedObjects zu holen und direkt in den HTML-Code zu packen, bekomme aber einen Type Mismatch in der ForAll-Zeile.
--- Code: --- While Not(doc Is Nothing)
If doc.Subject(0) = subject Then
Set rtitem = doc.Getfirstitem("Body")
htmlContent = htmlContent & rtitem.Converttohtml()
If rtitem.Type = RICHTEXT Then
ForAll o In rtitem.EmbeddedObjects
If o.Type = EMBED_ATTACHMENT Then
imageTag = "<img src='data:image/png;base64," & o.GetEncodedObject() & "' />"
htmlContent = htmlContent & imageTag
End If
End ForAll
Print htmlContent
End If
End If
Set doc = view.GetNextDocument(doc)
Wend
--- Ende Code ---
jBubbleBoy:
'Type Mismatch' bedeutet, dass dein rtItem.Embeddedobjects leer (Empty) ist, aber selbst das würde nicht helfen, da die Methode GetEncodedObject nicht existiert.
Dein Problem heißt "Unknown or unsupported protocol version".
https://stackoverflow.com/questions/1880511/how-to-export-rich-text-fields-as-html-from-notes-with-lotusscript
schroederk:
--- Zitat von: jBubbleBoy am 19.04.24 - 13:03:02 ---https://stackoverflow.com/questions/1880511/how-to-export-rich-text-fields-as-html-from-notes-with-lotusscript
--- Ende Zitat ---
Die Idee mit dem GetHtmlFromField werde ich mal testen. Ist zwar ein wenig "von hinten durch die Brust ins Auge", aber auch schlank und schick ;) , wenn es funktioniert.
--- Code: ---Function GetHtmlFromField(doc As NotesDocument, fieldname As String) As String
Dim obj
Set obj = CreateObject("Microsoft.XMLHTTP")
obj.open "GET", "http://www.mydomain.dk/database.nsf/0/" + doc.Universalid + "/" + fieldname + "?openfield&charset=utf-8", False, "", ""
obj.send("")
Dim html As String
html = Trim$(obj.responseText)
GetHtmlFromField = html
End Function
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln