AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
29.03.20 - 04:21:41
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 8 und frühere Versionen
| |-+  ND8: Entwicklung (Moderatoren: Axel, Thomas Schulte, koehlerbv)
| | |-+  Bilder in RT-Feld einfügen
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Bilder in RT-Feld einfügen  (Gelesen 7241 mal)
bikerboy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1154



« 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.
Gespeichert

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"
koehlerbv
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 20460



« Antworten #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
Gespeichert
bikerboy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1154



« Antworten #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.
Gespeichert

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"
eknori
@Notes Preisträger
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11366


« Antworten #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
Gespeichert
eknori
@Notes Preisträger
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11366


« Antworten #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 » Gespeichert
eknori
@Notes Preisträger
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11366


« Antworten #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 » Gespeichert
pram
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1169



WWW
« Antworten #6 am: 11.02.10 - 16:49:07 »

Wäre evtl DXL eine Alternative?
z.b. das:

http://www.openntf.org/Projects/codebin/codebin.nsf/0/DF779ACFF30EB48886257118004D35B5

Gruß
Roland
Gespeichert

Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework
Thomas Schulte
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 4388


Ich glaub mich tritt ein Pferd


« Antworten #7 am: 11.02.10 - 17:45:26 »

Nein, weil import in Richtext Feld und nicht Import als Ressource ....
Gespeichert

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
pram
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1169



WWW
« Antworten #8 am: 11.02.10 - 18:37:56 »

@Thomas: das ist keine ausreichende Begründung für mich  Wink

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
Gespeichert

Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework
bikerboy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1154



« Antworten #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.

Gespeichert

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"
pram
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1169



WWW
« Antworten #10 am: 12.02.10 - 15:59:20 »

So schwierig ist das nicht. Smiley 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
Gespeichert

Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework
bikerboy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1154



« Antworten #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
Gespeichert

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"
bikerboy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1154



« Antworten #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.

Gespeichert

Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"
CarstenB
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 193


« Antworten #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
Gespeichert
pram
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1169



WWW
« Antworten #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
Gespeichert

Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework
CarstenB
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 193


« Antworten #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.
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: