Autor Thema: Grafiken in Rich Text Feldern per URL in HTML direkt einbinden  (Gelesen 1861 mal)

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
hier gab es mal einen Thread zu R5 zu diesem Thema mit exakt diesem Titel.

Essenz: Eingefügte Bilder lassen sich nur über ein Offset direkt ansprechen, dieses Offset kann aber nicht manuell berechnet werden.

Hat sich hier irgendwas in die Richtung getan ?

Die Hilfe sieht immer noch aus wie zu R5- Zeiten und auch im LDD oder in der KB habe ich nix gefunden.

Hat inzwischen jemand einen Workaround gefunden, ohne das Richtextfeld als Mime zu speichern ?

Gruß
Tode
« Letzte Änderung: 21.09.06 - 12:15:02 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Ayhan

  • Aktives Mitglied
  • ***
  • Beiträge: 102
  • Geschlecht: Männlich
  • Geht immer!
    • fabrique d' images ebusiness GmbH
Hi Tode,
ich kenne den Beitrag nicht, aber das Problem dafür umso mehr.

Ich habe folgendes gemacht:
Das Feld bleibt als RTF. Ich habe eine neue Ansicht "webtmp" + eine eigene Webmaske (angegeben als FormFormula in der Ansicht "webtmp"). Die Webmaske enthält nur das RTF-Feld, die Option "Seiteninhalt als HTML..." ist aktiviert (ich kenne den Begriff grad nicht auswendig, aber das ist die Option, bei dem Domino den Standard-HTML-Header in einer Webmaske/-seite nicht ausgibt).

Beim Speichern des Dokumentes öffne ich das aktuelle Dokument (über die Ansicht webtmp) über Script + perweb.nsf (es wird dadurch ein Document instanziert), danach greife ich auf das BODY-Feld zu (hier steht der für diese Seite generierte HTML-Quelltext). Danach kannst über String-Operationen die Pfade der Bilder parsen.

Ich bin grad nicht im Office, aber wenn Intresse besteht, kann ich dir mal einpaar Codeschnipsel posten.

Der Nachteil:
Das funktioniert leider nur in Umgebungen mit Zugriff auf das Netzwerk bzw. Internet. Eine lokale Lösung kenne ich selber nicht.

Vielleicht hilfts dir ja trotzdem.
Ayhan

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
das hört sich doch schon mal sehr gut an...

Verstehe ich das richtig: Beim speichern öffnest Du das Dokument NOCHMAL (neue Instanz) mit neuer Maske und liest dort die Links aus (über Text- Operationen), und schreibst diese dann zurück ins eigentliche Dokument ?

Clever, clever...

Würde mich sehr über ein oder zwei Zeilen Code freuen.
In der Zwischenzeit probiere ich mal selbst kurz, ob ich das hinkriege...

Thanx
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Ayhan

  • Aktives Mitglied
  • ***
  • Beiträge: 102
  • Geschlecht: Männlich
  • Geht immer!
    • fabrique d' images ebusiness GmbH
Hi Tode,

richtig, so mache ich das. Ich öffne das Dokument über den webretriever, dann habe ich den Inhalt des RTFs als HTML und kann dann damit weiter arbeiten.

Hier mal einpaar Codeschnipsel:
Code
[b]Funktionsaufruf:[/b]
.....
Dim tmpdoc As NotesDocument
Dim serverfinalname As String	
	
	
Set uidoc= ws.editdocument(True,doc)
Call uidoc.Save
Call uidoc.Close(True)
	
	
'Aktuellen Servernamen holen	um den HTML-Code zu holen
serverCommonName = serverName.Common	
serverfinalname = GetIpAddress(serverCommonName)
finalhtml = contenthtml(s, "http://" & serverfinalname & dbname(0) &"id/" & doc.UniversalID)
'ENDE
	
If finalhtml = "fehler001" Or finalhtml="fehler002" Then
	Goto Fehler
Else
	Goto Weiterverarbeiten
End If

[b]Funktion GetIPAdress[/b]
Function GetIPAddress(theserver As String) As String
	
	Dim s As New notessession
	Dim pab As notesdatabase
	Dim addbooks As Variant
	Dim connections As notesview
	Dim conDoc As notesdocument
	Dim dc As NotesDocumentCollection
	Dim count As Integer
	
	Dim tmpback As String
	Dim tmp As Variant
	
	addbooks = s.addressbooks
	
	Forall dbs In addbooks
		If dbs.isprivateaddressbook Then
			If Ucase(dbs.filename) = "NAMES.NSF" Then
				Set pab = dbs
				If Not pab.isopen Then Call pab.open("", "")
				Exit Forall
			End If
		End If
	End Forall
	
	Set connections = pab.getview("($Connections)")
	Set dc = connections.GetAllDocumentsByKey("*", True)	
	
	If dc.count = 0 Then
		GetIpAddress = theserver
	Else
		Set conDoc = dc.GetFirstDocument
		For count = 0 To dc.Count - 1
			tmp =  Evaluate({@Middle("} & conDoc.Destination(0)& {"; "="; "/")})
			tmpback= tmp(0)
			
			If Lcase(tmpback) = Lcase(theserver) Then
				GetIpAddress = conDoc.OptionalNetworkAddress(0)
			End If
			Set conDoc = dc.GetNextDocument(conDoc)
		Next
		
		If GetIpAddress = "" Then
			GetIpAddress = theserver
		End If
	End If
	
End Function


[b]Function ContentHTML:[/b]
Function contenthtml(s As NotesSession, theurl As String) As String
	
	Dim webDb As NotesDatabase
	Dim doc As NotesDocument
	Dim mime As NotesMIMEEntity
	Dim item As NotesItem	
	Dim url As String
	Dim Text As String
	Dim i As Integer
	
	Set webDb = New NotesDatabase("","perweb.nsf")
	
	url = theurl
	s.ConvertMime = False
	
	For i = 0 To 1 Step 4
		Set doc = webDb.GetDocumentByURL(url + "?OpenDocument&date=" + Cstr(Rnd(0)), 1)
	Next 
	
	
	If doc Is Nothing Then
		Text = "fehler001"
	Else
		If Not doc.httpstatus(0) = "200" Then
			Text = "fehler002"
		Else
			Set item = doc.GetFirstItem( "Body" )
			Set mime = item.GetMimeEntity
			Text = mime.ContentAsText
			Text = Trim(Text)	
		End If
	End If
	
	s.ConvertMime = True
' In der Webmaske ist der Content der Seite zwischen den Tags "contentofpage" eingeschlossen. StrMiddle ist eine @Middle-Script-Umsetzung
	contenthtml = strMiddle(Text, "<contentofpage>", "</contentofpage>")
	
End Function


Noch ein Screenshot anbei für die Webmaske. Und wichtig: Der Inhalt des RTF-Feldes in der Erfassungsmaske wird nicht als MIME gespeichert  ;)

Hoffe du kannst mit dem Code was anfangen. Wenn ich irgendwo noch eine wichtige Funktion ausgelassen haben sollte, einfach bescheid geben. Viel Erfolg!
Ayhan

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Schöner Code.... Vielen Dank.

Der Befehl der mir gefehlt hat war "GetDocumentByURL"...

Dass dieser Code quasi eine HTML- Seite in ein Notes- Document verwandelt war mir bisher nicht klar...

Danke nochmal, das hilft mir immens weiter.

Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz