Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: machineslave am 06.09.05 - 09:42:41
-
Hallo,
kann mir jemand sagen, wie ich über die Backend-Klassen JPGs in ein Richtextfeld importieren kann?
Gruß
Stefan
-
NotesRichTextItem.EmbedObject.
Hat eine Menge an Beispielen in der hilfe.
-
Nein, das geht nicht.
Und axel bevor du jetzt loslegst. EmbedObject NE import.
-
Wieso?
Set object = rtitem.EmbedObject _
( EMBED_OBJECT, "", "c:\jim.jpg")
geht nicht?
Ich bin nicht allwissend und lerne gern dazu.
-
Damit erstellst Du ein Attachment. Importieren (einbetten) kann man ein Bild so leider nicht.
Bernhard
-
Thx.
Hm. Ich kann mich wieder dunkel erinnern, glaub ich.
Geht das über irgendwelche OLE Mittel?
Gruß Axel
-
Hallo zusammen,
ja es geht.
ABER...meines wissens nur über die DXL-Klassen (vielleicht ja auch einfacher, ich würde mich über einen Tipp freuen (*) ) . Denn DXL bedeutet dass man knietief in XML-tags warten muss. Und wenn man in diesem Sumpf endlich Luft bekommt, dan gehts mit den Richtextklassen weiter. Kurz und gut: nichts für mal eben in ein paar Tagen.
(*) und falls jemand dann auch noch einen tipp hat, wie man ein Richtext-Element an eine beliebige Pos. in ein anderes RT einfügt, geb ich einem aus.
-
Hallo,
über die DXL-Klassen kann ich aber doch nur komplette Daten in eine DB importieren. Ich möchte aber nur ein Bild in ein bereits bestehendes Dokument importieren.
Stefan
-
@Roalf: interessanter Beitrag.
Meines Wissens werden in DXL aber eingebettete Objekte als base64 encoded OLE Objekte eingebettet. Und OLE Objekte ist noch einmal etwas anderes als das File selber. Das heisst man müßte aus der Datei
- erst ein OLE Objekt erstellen
- dieses OLE Objekt base 64 encoden
- die entsprechenden Tags in das DXL in die richtige Stelle einfügen?
Axel
-
Naja du müsstest erst das Dokument exportieren, dann dort entsprechend ändern und anschließend wieder importieren wobei du das bereits vorhandene Dokument komplett überschreiben müsstest. Ich hab keine Ahnung ob das ein brauchbarer Weg wäre.
-
hast Du viele Bilder?
Ich habe es so gelöst:
- die Bilder werden als gemeinsame Bildressource in eine DB eingefügt (dafür wird DXL und Base64 benötigt)
- in der Quelle wird eine Bildresource angelegt und der Name berechnet. Der Name des Bildes steht dann in einem Textfeld.
Ist jetzt zwar nicht genau deine Anforderung aber vielleicht kannst Du etwas damit anfangen.
-
Hmm Dirk, dann könnte man das aber auch über einen Frontend Agent lösen. Da geht das ja auch. Nur im Backend geht das so einfach nicht.
-
Hallo Dirk,
hättest Du mal ein Beispiel, wie ich sowas mit DXL realisieren könnte?
Die einzige Möglichkeit ist wohl, die Bilder per DXL in eine DB zu importieren und dann kann man die Richtextfelder ja einfach per Script in die bestehenden DOkumente kopieren.
Gruß
Stefan
-
Noch einmal die Frage, warum eigentlich über den Backend? Was steckt dahinter?
-
@Thomas Schulte
läuft im BackEnd, es wird kein FrontEnd benötigt.
@machineslave
Ich benutze die Class Base64 von Johan Känngård, dort ist mehr implementiert, wie für den Import benötigt wird.
In Initialize müssen noch die Var TempPath und pathName angepasst werden. Mögliche Fehler werden als Dokumente in die DB eingetragen (also erst mit einer leeren DB testen). Importiert werden nur Dateien mit der Erweiterung gif, jpg und jpeg.
-
@Thomas
Ganz einfach,
auf einer AS/400 wird ein Programm gestartet, welches Daten zusammensammelt. Danach wird automatisch eine Mail an eine Mail-In-DB gesendet, woraufhin ein getriggerter Agent losmarschiert und die Daten importiert.
Da es sich um Artikeldaten handelt, sollen entsprechend dazu auch die Bilder importiert werden.
@Diali
Danke, ich werd's gleich mal ausprobieren.
Stefan
-
Dies hier:
http://www-10.lotus.com/ldd/nd6forum.nsf/ShowMyTopicsAllFlatweb/4feed073883d7fb685256f2a0035d3a6?OpenDocument
läuft zumindest nach einem kurzen Test unter 6.5.4 ganz ordentlich.
Gruss
Joringel
-
@kennwort
yo, so meinte ich das, ich hatte seinerzeit das ganze mit Java umgesetzt und benutze die base64 http://www.koders.com/java/fid0B3CC2E376919039992D79E63729391535061509.aspx
aber die class base64 von diali geht sicher auch.
@joringel
prima Tipp, ich werde gleich mal. Vielleicht ist die welt ja doch einfacher als ich gedacht habe.
-
läuft zumindest nach einem kurzen Test unter 6.5.4 ganz ordentlich.
Das ist doch nichts anderes als das stinknormale "EmbedAttachment"? Die Datei wird einfach angehängt.
Der Import soll doch dann das Bild anzeigen und kein Attachment.
-
@Joringel
G E N I A L. Das ist haargenau das, was ich brauche.
Many many thanks
8) 8) 8)
Stefan
-
@Thomas
Nein, zwischen embed und import ist ein himmelweiter Unterschied.
Wenn Du ein Bild importierst, wird das Bild angezeigt, während beim embed nur das schnöselige Icon sichtbar ist.
-
@joringel
und wieder mal etwas dazugelernt. Danke für den Tipp.
-
@Thomas
Nein, zwischen embed und import ist ein himmelweiter Unterschied.
Wenn Du ein Bild importierst, wird das Bild angezeigt, während beim embed nur das schnöselige Icon sichtbar ist.
Danke Stefan aber DEN unterschied kenne ich schon seit ein paar Jahren ;D
Aufpassen muss man aber bei der Lösung auch.
Denn hat der Benutzer in seinen Benutzervorgaben die Einstellung "In-Line-MIME-Bilder als Anhänge anzeigen" ausgewählt war der ganze Aufwand für die Katz. Dann sind es nämlich wieder Attachments.
Das war es übrigens auch was bei mir da gefehlt hat. Sonst ist das wirklich eine saubere Lösung die mit relativ wenig Aufwand auch auf unterschiedliche Grafiktypen zu erweitern ist.
-
hmm.. die Einstellung ist bei uns standardmässig nicht aktiviert, aber gut zu wissen und danke für den Tip.
Stefan
-
Naja du müsstest erst das Dokument exportieren, dann dort entsprechend ändern und anschließend wieder importieren wobei du das bereits vorhandene Dokument komplett überschreiben müsstest. Ich hab keine Ahnung ob das ein brauchbarer Weg wäre.
Es reicht doch das Dok in einen Stream zu laden, den Stream zu modifizieren, und dann wieder zurückzuschreiben. Base64 ist da noch ein Thema, d.h. das Bild-File muss noch in Base64 encoded werden, bevor man es in den Stream reinsetzt.
Hier übrigens noch ein Weg über LotusScript, WinAPI und NotesAPI, um ein Bild via Backend zu importieren:
AtNotes BP: Bilder in ein Richtextfeld importieren (http://www.atnotes.de/index.php?topic=13839.0)
(siehe Kap. 8 )
-
imho sind Streams eine Abstraktion, um bytes (zusammengefasst als characters oder eben als bytes) von einem Ort zum anderen zu transportieren.
Nicht unbedingt etwas, das man gleichzeitig beschreiben und lesen könnte.
Eher: Neues Bild mit Quelle Datei mit einem Stream in ein NotesDokument, möglicherweise als dxl (Ziel) schreiben. Man kann in diesen Prozess allenfalls einen Filter legen, der die einzelnen bytes base64 enkodiert.
Jedoch nicht: Stream laden, Stream modifizieren, Stream neu reinschreiben.
Das wären dann eher 2 Streams einer zum laden und 1 zum neu reinschreiben.
In den Java Klassen gibt es noch RandomAccessFile zum lesen und schreiben, das ist aber was anderes und imho gibt es dafür keine Entsprechung in den Notes Klassen sowie wird auch in Java selten benutzt.
-
Hier übrigens noch ein Weg über LotusScript, WinAPI und NotesAPI, um ein Bild via Backend zu importieren:
AtNotes BP: Bilder in ein Richtextfeld importieren (http://www.atnotes.de/index.php?topic=13839.0)
(siehe Kap. 8 )
Hmm Mathias. Sollten wir den Artikel nicht vielleicht überarbeiten? Wir haben hier nämlich zwei Methoden die auch im Backend funktionieren würden.
-
@Axel:
Jo, Du hast natürlich Recht, "den Stream zu modifizieren" ist so einfach natürlich nicht möglich.
Vielmehr müsste man also sich das Dokument in ein Stream holen, und mit dem SAX-Parser die Sachen holen die man braucht, neuen Stream zusammenstellen zusammen mit dem Base64-encodeten Bild wieder zusammenstellen.
@Thomas:
Gerne. Hast Du Lust, die Inhalte von hier aufzubereiten? Freiwillige vor ;D