Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: RvM am 15.05.12 - 09:03:36

Titel: JPEG in Richtext im Web darstellen.
Beitrag von: RvM am 15.05.12 - 09:03:36
Ich habe ein alte Programmierung, die noch unter Notes 5 erstellt wurde, auf einem neune Notes 8.5 Server laufen und nun Probleme bei der Darstellung von JPG, die in einem Richtext-Feld liegen.
Auf dem 5er Server wurde das Bild mit folgender URL angezeigt:
Code
".../Bild/0.7C?OpenElement&FieldElemFormat=jpg"
Auf dem 8er Server hingegen
Code
"../Bild/0.84?OpenElement&FieldElemFormat=jpg"
Was seltsam ist, das Dokumente, händisch angepackt werden, geöffnet, bearbeitet und gespeichert werden, das JPG mit der neuen URL anzeigen, alte Dokumente wieterhin mit der alten URL.
Einen Agenten, der einfach nur ein Feldinhalt ändert, reicht nicht, dass das dokument als bearbeitet erkannt wird.
Wie kann ich jetzt alles Dokumente per Agenten einmal öffnen, bearbeiten und schliessen lassen, damit alle die neue URL nutzen?
Ich hoffe, ich habe mich verständlich ausgedrückt.

LG
Rolf
Titel: Re: JPEG in Richtext im Web darstellen.
Beitrag von: pram am 15.05.12 - 16:25:31
Die Nummer 0.7C bzw 0.84 gibt den Byteoffset in Hex im Richtext an, wann das Bild beginnt und wird mehr oder weniger zufällig vergeben.

Da sich vermutl. in Version 8 das Richtext-Handling geändert hat, sind hier ein paar Bytes mehr im RT und schon passts nicht mehr.
Was spricht dagegen, das RT-Feld in die Maske einzubinden, so dass die Nummer ermittelt werden kann?

Einen direkten Zugriff auf die embedded-elements unter Umgehung des RT-Fields ist "Murx", da du nicht sichergehen kannst, dass das Bild immer an der gleichen Stelle im RT landet.

Beschreib dein Anliegen mal etwas genauer, warum .../Bild/0.7C?... fest codiert wurde, vielleicht gibt es eine elegantere Lösung.

Gruß
Roland
Titel: Re: JPEG in Richtext im Web darstellen.
Beitrag von: RvM am 16.05.12 - 08:36:31
Es geht um eine alte Programmierung:
http://www.photosforfree.de/ (http://www.photosforfree.de/)
Ich habe für die Pflege der Bilder eine Maske erstellt, in der ich das Bild, welches in folgender Maske zu sehen ist, nicht als Attachment, sondern als Bild in ein Richtext reinpacke:
http://www.photosforfree.de/rvm/photo.nsf/webBilder/Nachtisch_III11.05.?editdocument (http://www.photosforfree.de/rvm/photo.nsf/webBilder/Nachtisch_III11.05.?editdocument)
Den Inhalt dieses Dokumentes werte ich dann in der ersten Ansicht an.
Ich könnte theoretisch die Programmierung komplett auf Attachment umstellen, aber dann müsste ich alle 1.289 Dokumente neu anlegen - und das wäre nicht im Sinne des Erfinders.
Titel: Re: JPEG in Richtext im Web darstellen.
Beitrag von: pram am 16.05.12 - 13:12:35
Du bräuchtest den Byteoffset bzw. die Bild-URL um die Dokumente in einer Ansicht darzustellen.
Den Byteoffset kannst du entweder über die C-API ermitteln (komplizier) oder durch Holen der URL "....?OpenField" vom HTTP-Task

http://www.photosforfree.de/rvm/photo.nsf/webBilder/6792D9D60102B09BC12577AB006289D0/Bild?OpenField

Ein Agent der mal über alle Dokumente läuft könnte dann den richtigen Byteoffset/Bild-URL in die Dokumente speichern.
Alternativ kannst du auch das HTML-Schnipsel mit AJAX/IFrame in die Ansicht einbinden. Ersterer Weg wäre aber besser.

Gruß
Roland
Titel: Re: JPEG in Richtext im Web darstellen.
Beitrag von: RvM am 17.05.12 - 21:32:35
Danke für den Tipp:
Was nur sehr seltsam ist, dass der Aufruf des Direktlink

http://www.photosforfree.de/rvm/photo.nsf/webBilder/6792D9D60102B09BC12577AB006289D0/Bild?OpenField (http://www.photosforfree.de/rvm/photo.nsf/webBilder/6792D9D60102B09BC12577AB006289D0/Bild?OpenField)
bei allen Bildern mit entsprechender DocumentID funktioniert, aber innerhalb der Ansicht die URL nicht aufgelöst wird.
Ich habe mal testweise die hardcore-Verdrahtung gewählt, aber das Bild wird dennoch nicht angezeigt.
Ich bin ratlos.
Titel: Re: JPEG in Richtext im Web darstellen.
Beitrag von: pram am 18.05.12 - 11:20:20
OpenField liefert ein HTML:

http://www.photosforfree.de/rvm/photo.nsf/webBilder/6792D9D60102B09BC12577AB006289D0/Bild?OpenField
Code
<div align="center">
<p><img src="/rvm/photo.nsf/0/6792d9d60102b09bc12577ab006289d0/Bild/0.7C?OpenElement&amp;FieldElemFormat=jpg" width="300" height="200"></div>
Dieses HTML musst du z.B. per Agent auslesen und daraus den Offset, bzw. die Bild-URL extrahieren und in dein Dokument schreiben
Das kannst du z.B. so machen
Code
	Dim objHttp, ret$
	Set objHttp = CreateObject("Microsoft.XMLHTTP")
	
	objHttp.open "GET", "http://www.photosforfree.de/rvm/photo.nsf/webBilder/6792D9D60102B09BC12577AB006289D0/Bild?OpenField", False, "", ""
	Call objHttp.send()
	
	ret = objHttp.ResponseText
	MsgBox StrLeft(StrRight(ret,{src="}),{"})
(ist zwar auch keine 100%ig saubere Lösung, wird aber funktionieren)

Gruß
Roland

Titel: Re: JPEG in Richtext im Web darstellen.
Beitrag von: RvM am 25.06.12 - 19:46:52
Da ich im Scripten nict so firm bin, eine Frage:
Wie kann ich scriptmäßig denn die Dok ID auslesen? Ich muss ja diesen Agenten beim speichern des Dokumentes laufen lassen und dafür die Dok-ID des Dokumentes bekommen - oder?
Titel: Re: JPEG in Richtext im Web darstellen.
Beitrag von: pram am 27.06.12 - 21:05:15
die UniversalID bekommst du über doc.universalID.

Du musst den Agenten nach dem Speichern laufen lassen, da das Dokument ja u.U. nicht da ist. (idealerweise im PostSave oder einmal täglich) was aber wieder andere Nebenwirkungen haben kann, da im Postsave das Dokument nochmals gespeichert werden muss.

Zur Umsetzung der Lösung sind allerdings Scriptkenntnisse unbedingt erforderlich.
 
Gruß
Roland