Autor Thema: Richtext Feld per Script um HTML Code erweitern!  (Gelesen 991 mal)

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 446
  • Geschlecht: Männlich
Richtext Feld per Script um HTML Code erweitern!
« am: 16.04.24 - 10:15:52 »
Hallo Zusammen,

ich habe ein vermeintlich banales Problem.
Ich möchte den Inhalt eines Richtext-Felds (Body) einer E-Mail um einen HTML Code (Tabelle usw.) erweitern um diese später zu versenden.

Mein Ansatz war, das Notesdokument zuerst nach MIME zu konvertieren, um es dann per DXL zu exportieren.
Im Anschluss wollte ich in der DXL-Datei den HTML Code einfügen, um dann das Ganze wieder zu importieren.

Soweit die Theorie.
Ich scheitere nun aber bereits einfach daran, eine DXL Dokument das ich exportiert habe einfach wieder zu importieren.
Der Import wirft einen Fehler.

Ich habe hierzu diesen Hilfeeintrag gefunden, der mir aber auch nicht geholfen hat.
https://atnotes.de/index.php/topic,62832.msg401123.html#msg401123

Hat jemand noch eine Idee, wie man das sonst noch machen könnte oder was ich aktuell falsch mache?
System: Domino und Notes 12.0.2 FP3

Anbei mein Code:

Code
Function xxx_DXL(newMailDoc As NotesDocument) As Boolean
	On Error GoTo errhandler
	xxx_DXL = False

	Dim streamDoc As NotesStream
	Dim dxlExporter As NotesDXLExporter
	Dim dxlImporter As NotesDXLImporter
	Dim ses As New NotesSession
	Dim strDoc As String
	Dim filename As String
	Dim filenum As Integer
	
	filename =  "C:\temp\NotesDokument_XML_Export.dxl"

	' Dokumenet nach MIME konvertieren	
	Call newMailDoc .ConvertToMIME( CONVERT_RT_TO_HTML)
	
	' Dokument exportieren
	On Error Resume Next
	Kill filename
	On Error GoTo errhandler
	
	filenum = FreeFile
	Open filename For Output As filenum Charset = "UTF-8"
	
	Set streamDoc = ses.Createstream()
	Set dxlExporter = ses.CreateDXLExporter()
	dxlExporter.Omitrichtextattachments = True
	Call dxlExporter.SetInput(newMailDoc)
	Call dxlExporter.SetOutput(streamDoc)
	Call dxlExporter.Process
	
	strDoc = streamDoc.ReadText
	
	Write #filenum, strDoc
	Close filenum
	
	
	'Nun das DXL File wieder importieren		
	Set dxlImporter = ses.Createdxlimporter()
	dxlImporter.DocumentImportOption = DXLIMPORTOPTION_UPDATE_ELSE_IGNORE
	dxlImporter.Inputvalidationoption = 0
	Call dxlImporter.Import(strDoc, CS_Database)

	xxx_DXL = True
	Exit Function

errhandler:
	Msgbox "Fehler: " & Error & " (" & Err &  ") in Zeile: " & Erl, 16, ""
	Exit Function	
End Function

Grüße
Bernd
Arbeite klug, nicht hart.

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Antw:Richtext Feld per Script um HTML Code erweitern!
« Antwort #1 am: 17.04.24 - 08:01:19 »
warum muss die Tabelle denn auf HTML Basis sein?

-Werner

Offline Legolas

  • Senior Mitglied
  • ****
  • Beiträge: 446
  • Geschlecht: Männlich
Antw:Richtext Feld per Script um HTML Code erweitern!
« Antwort #2 am: 17.04.24 - 08:21:33 »
Hallo,
die HTML Datei (Tabelle mit diversem Inhalt) ergänzt die eignetliche E-Mail um Informationen aus einem Drittsystem.
Da das Einfügen bzw. Ergänzen per Richtext-Feld (z.B: ein RichText-Feld mit Tabelle) beim anschließenden Domino internen rendern (um die Mail per SMTP zu versenden) immer zu Qualitätsverlusten führt, muss das auf diesem Wege umgesetzt werden.
Das Domino Rendering-Ergebnis von komplexeren Tabellen aus Richtext-Feldern nach HTML sieht in den meisten Fällen sehr bescheiden aus.

Grüß
Bernd
Arbeite klug, nicht hart.

Offline Werner Götz

  • Aktives Mitglied
  • ***
  • Beiträge: 249
  • Geschlecht: Männlich
Antw:Richtext Feld per Script um HTML Code erweitern!
« Antwort #3 am: 17.04.24 - 08:56:15 »
Ich mache relativ viel über DXL-Exports sowie -Imports und weiß dass ich damals viel gekämpft habe, bis ich das zum Laufen gebracht hatte und viele Bugs bzw. Ungereimtheiten gefunden hatte.

Folgendes (vereinfachtes und ich hoffe selbsterklärendes) Code-Fragment funktioniert bei mir, erzeugt aber ein neues Dokument ...

-Werner

Code
Set mImporter = mSession.CreateDxlImporter(, mThisDb)	
Set stream = mSession.CreateStream
Call stream.Writetext(dxl)
Call mImporter.SetInput(stream)
mImporter.ExitOnFirstFatalError = True
mImporter.DocumentImportOption = DXLIMPORTOPTION_REPLACE_ELSE_CREATE
mImporter.ReplicaRequiredForReplaceOrUpdate = False			
On Error Resume Next
Err = 0
Call mImporter.Process
If Err <> 0 Then
	... '// hier mImporter.LOG und mImporter.LOGComment anzeigen oder wegloggen usw.
	Error 32000, "..."		
End If
On Error GoTo 0
strID = mImporter.GetFirstImportedNoteId()
Set doc = mThisDb.GetDocumentByID(strID)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz