Autor Thema: Bilder in RT-Feld einfügen  (Gelesen 11233 mal)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Bilder in RT-Feld einfügen
« am: 10.02.10 - 16:41:20 »
Hallo, ich hatte vor Wochen das Netzt durchsucht und bin auf eine Funktion gestossen die mir Bilder per Backend in ein RT-Feld "geöffnet" einfügt.

Nun stösst die Funktion leider bei ein paar Bilder auf ein Problem und liefert weisse Bilder. Die Funktion die ich damals gefunden hatte war folgende

"CreateImageItem"

Sie liest eine angebene Datei Binär aus und schneidet wohl den Teil raus der die pure Bildinformation ist. Jedenfalls würde ich mich freuen, falls jemand noch was anderes kennt.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #1 am: 10.02.10 - 23:48:51 »
Robert, Deine Frage ist unverständlich. "Backend" und "Feld" beisst sich, ebenso "Bckend" und "geöffnet". "CreateImageItem" dürfte auch nicht jeder kennen.

Kannst Du bitte Deine Frage nochmals formulieren?

Bernhard

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #2 am: 11.02.10 - 08:44:40 »
Ja wenn ich es heute morgen nochmal lese mit nem Kaffe kann ich das sicherlich besser erklären.

Ich hatte die Anforderung das Bilder als Bilder und nicht als Anhang in ein RTFeld eingefügt werden sollen. Da wir ganz viele Bilder haben, also über 1.000 sollte das mit einem Agenten über das Backend geschehen.

Die Funktion die ich dazu gefunden haben war die genannte "CreateImageItem" die die Bilder binär ausliesst und den puren Bildanteil in Base64 umwandelt und dann in das Feld schreibt. Die Funktion baut auf ein paar C-Api-funktionen die den puren Bildanteil in das RT-Feld schreiben. Leider macht das "Tool" bei manchen Bildern Probleme. Dort fügt es nur ein weissen Bild ein.

Jetzt gibt es 2 Möglichkeiten. Die eine die Bilder sind kaputt (Wird gerade gegengeprüft). 2. Möglihckeit ist, dass das Tool nicht ganz ordentlich läuft. Werde mich aber gleich nochmal melden wenn ich die 1. Möglichkeit ausschliessen kann.

Habe für die 1. Möglichkeit mit dem Irfanview alle Dateien einmal neugespeichert.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #3 am: 11.02.10 - 08:56:08 »
Zitat
"CreateImageItem" dürfte auch nicht jeder kennen.
Richtig, daher hier einmal der Link:
http://www.angelfire.com/ult/tipslotusnotes/Importing%20the%20Images%20in%20rich%20text%20Field%20via%20agent.htm
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #4 am: 11.02.10 - 09:25:49 »
Robert, gucke dir mal das Ergebnis mit NotesPeek an.
Sowohl length als auch seg-size  beim reg-type "ImageSegment" müssen eine gerade Zahl sein.
Möglicherweise ist das ein Anhaltspunkt.

Update: wird ja gemacht
ssize% = dsize% + (dsize% And 1)  ' round up
« Letzte Änderung: 11.02.10 - 09:41:20 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #5 am: 11.02.10 - 11:01:09 »
Das

          '.Record SIG_CD_BEGIN
          '.Put 1%  ' version
          '.Put SIG_CD_GRAPHIC

und das

          '.Record SIG_CD_END
          '.Put 1%  ' version
          '.Put SIG_CD_GRAPHIC

Segment kannst du übrigens weglassen; Beim Editieren des Docs werden diese CD Records von Notes verworfen.

Und gucke dir an, ob du
'Set body = .CreateRichTextItem("Body")
brauchst. Wenn deine Form bereits ein Item mit dem Namen enthält, wird dadurch ein weiteres, namensgleiches erstellt.
« Letzte Änderung: 11.02.10 - 11:06:19 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bilder in RT-Feld einfügen
« Antwort #6 am: 11.02.10 - 16:49:07 »
Roland Praml

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

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Bilder in RT-Feld einfügen
« Antwort #7 am: 11.02.10 - 17:45:26 »
Nein, weil import in Richtext Feld und nicht Import als Ressource ....
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bilder in RT-Feld einfügen
« Antwort #8 am: 11.02.10 - 18:37:56 »
@Thomas: das ist keine ausreichende Begründung für mich  ;)

Es geht über DXL auch mit RT-Feldern (da ich das schon gemacht hab)
Einfach ein DXL-Schnipsel basteln, welche die UNID des Dokuments enthält und das RT-Item mit dem Base64-codierten Bilddaten.
Code
<document xmlns="http://www.lotus.com/dxl" replicaid="..." version='6.5'>
  <noteinfo unid="..."></noteinfo>
  <item name='...'>
	... richtext-XML...
  </item>
</document>
(Wie das DXL auszusehen hat, findet man am Einfachsten raus, wenn man sich ein Dokument mal exportiert)

Dann das DXL dem Importer geben und dem Importer sagen, dass er nur die Items die im DXL stehen zum vorhandenen Dokument updaten soll. (importer.DocumentImportOption = DXLIMPORTOPTION_UPDATE_ELSE_IGNORE)

Gruß
Roland
Roland Praml

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

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #9 am: 12.02.10 - 14:55:20 »
ja sicherlich richtig, die schwierigkeit hier besteht doch jetzt aber darin den bas64codierten teil aus einer datei rauszulesen.

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bilder in RT-Feld einfügen
« Antwort #10 am: 12.02.10 - 15:59:20 »
So schwierig ist das nicht. :) Man kann das NotesMimeEntity dafür zweckentfremden:
Beispiel siehe hier http://wwwendt.de/tech/base64/libBase64.lss

DXL ist ja für dich soweit ich weiß auch kein Neuland mehr. (hattest da nicht irgendwelche Probleme mit der Skalierung)

Ich kenn jetzt dein genaues Konzept nicht, aber ich würde es wie Folgt machen:

1. Das Dokument im Backend anlegen (ohne RT-Item)
2. Das Dokument speichern. (Dies ist wichtig, der Importer kann nur Dokumente updaten die gespeichert sind.)
3. Den DXL-Header in einen Stream schreiben. Müsste etwa so aussehen: <document...><noteinfo.../><item...><richtext...><par><img...>
4. Die Base64 Daten in den Stream schreiben (blöderweise kann man writeText und write im Stream nicht mischen :-( )
5. Alle DXL-Tags schließen
6. Import durchführen mit DXLIMPORTOPTION_UPDATE_ELSE_IGNORE (dieser fügt das RT-ITem hinzu)
7. Wichtig! Das Dokument darf nun nicht mehr gespeichert werden! (gibt glaub ich einen Replizier/Speicherkonflikt)

Will man das Dokument im Anschluss aus irgendwelchen Gründen trotzdem nochmals speichern, so muss man es neu laden. Zuerst merkt man sich die NoteID, dann löscht man die Referenz mit "delete doc" aus dem Speicher, dann holt man sich es mit set doc = db.getDocumebtByID(....) wieder.


Gruß
Roland
Roland Praml

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

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #11 am: 15.02.10 - 11:55:40 »
Ja cool gerade mal die Zeit gefunden deinen Tip zu probieren. Wollte erst aufgeben, weil ich immer versucht habe das Bild zu decodieren, aber nach einem Kafee kam dann die Idee. Jetzt muss ich nur noch die Skalierung hinbekommen. Der müsste doch auch eigentlich im Bild selber stecken oder. Also die Masse des Bildes
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #12 am: 15.02.10 - 13:47:22 »
Hab noch ne alte Funktion von nem Kollegen gefunden die die Bildmaße aus der Datei liesst.

Habe die mal die vorab Version als Anhang an den Post gehangen.

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline CarstenB

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #13 am: 09.02.12 - 11:21:05 »
Hallo Robert,
ich habe auch das Problem, dass die Function CreateImageItem nicht zu 100% funktioniert. Teilweise werden die Images (auch JPGs) nicht angehangen. Oder genauer gesagt: Es wird was angehangen, aber das Bild wird nicht angezeigt, man sieht nur einen leeren Rahmen. Im notes.net habe ich auch ein paar Threads über das Problem gefunden, aber leider keine Lösung.

Daher wollte ich deine Lösung ausprobieren, aber die container.nsf ist lokal verschlüsselt. Kannst du die evtl. noch einmal hochladen?

Vielen Dank

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bilder in RT-Feld einfügen
« Antwort #14 am: 09.02.12 - 21:51:11 »
alter Thread, heute würde ich das so machen:
http://atnotes.de/index.php/topic,52040.msg334799.html
(Letzter Tipp ganz unten)

Gruß
Roland
Roland Praml

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

Offline CarstenB

  • Aktives Mitglied
  • ***
  • Beiträge: 193
  • Geschlecht: Männlich
Re: Bilder in RT-Feld einfügen
« Antwort #15 am: 10.02.12 - 13:54:38 »
Hallo Roland,
vielen Dank für den Hinweis. Werde das in meine DB übernehmen.

Ein Hinweis noch zur Funktion "CreateImageItem", vielleicht hilft es anderen: Nutzt man anstelle von JPGs GIFs, dann scheint das Problem der leeren Rahmen nicht aufzutreten.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz