Autor Thema: Bilder im RichText  (Gelesen 16804 mal)

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Bilder im RichText
« am: 19.02.09 - 16:02:42 »
Hi,

ich habe eine Notes-intern versendete Mail mit 2 Bildern im Textfeld (body). Normalerweise liest mein zuständiger Agent sämtliche Anhänge und Bilder aus (und speichert diese), nur in dem Fall nicht!
Bisher behandle ich Anhänge bzw. Bilder zum einen so: (Auszug)
Code
If ( doc.HasEmbedded ) Then
		If ( attachment.Type = RICHTEXT ) Then
			Forall o In attachment.EmbeddedObjects
				If ( o.Type = EMBED_ATTACHMENT ) Then

zum anderen über 'NotesMIMEEntity'. Das klappt auch 1a.

Bei dieser Mail jedoch greift keine Methode. Hier sehen außerdem vom Maildokument die body-Items so aus (mehr steht jeweils nicht drin):
Code
Feldname: Body
Datentyp: Rich Text
Datenlänge: 44268 Byte
Seq.-Num.: 1
Doppeleintrags-ID: 0
Feld-Flags: SIGN SEAL

Hiervon gibts 32 body-Items mit laufender Nr. bei 'Doppeleintrags-ID' und unterschiedlicher 'Datenlänge'!

Wie komme ich hier erstmal grundsätzlich an so ein Bild ran?


Danke und Gruß

Rico.


Lotus Notes 8.0.2

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Bilder im RichText
« Antwort #1 am: 19.02.09 - 16:29:10 »
Die Mail ist verschlüsselt!

Wo läuft denn der Agent? Durch den Client gestartet oder als Serverinstanz?

Thomas

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #2 am: 19.02.09 - 16:32:31 »
Agent wird vom User per Button ausgeführt...

Verschlüssselt? Aha! Woran erkennt man das und was bedeutet das für mich, wenn ich an die Bilder ran will?

Rico.
Lotus Notes 8.0.2

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Bilder im RichText
« Antwort #3 am: 19.02.09 - 20:00:06 »
Verschlüssselt? Aha! Woran erkennt man das ...

An der Eigenschaft SEAL in DocPropertyFenster bei diesem Item

Agent wird vom User per Button ausgeführt...

... und was bedeutet das für mich, wenn ich an die Bilder ran will?

Rico.

Normalerweise sollte das Decrypten beim Zugriff auf die Items in dem NotesDocument automatisch passieren .... vorausgesetzt der den Button betätigende User hat den korrekten Private-Key (wenn ich mal vom Fall der Mailverschlüsselung ausgehe).

Thomas

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #4 am: 20.02.09 - 13:01:48 »
Mh... nun gut.
Aber ich so richtig bin ich hier jetzt leider nicht weiter gekommen.

Wie komme ich denn nun an solche (verschlüsselten oder auch nicht) Bilder im body(RichText) ran?
Welche Methoden gibt es hierfür?

Rico.
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #5 am: 12.03.09 - 10:40:46 »
Hallo,

ich muss das Thema nochmal aufgreifen, da ich einfach nicht weiterkomme...

Mein Maildokument enthält Bilder direkt sichtbar im Mailtext.
Wenn ich nun, wie im 1.Post beschrieben die Attachments auslesen will:
Code
If ( doc.HasEmbedded ) Then
...
...dann ist diese Bedingung hier schon false!!!
Wieso hat das Maildokument angeblich keine EmbeddedObjects, wenn ich die Bilder doch aber sehe?
Wie komme ich an diese blöden Bilder ran? Die Hilfe hat mich in dem Falle auch nicht schlauer gemacht, da ich lt. Hilfe bereits korrekt vorgehe!

Rico.
Lotus Notes 8.0.2

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Bilder im RichText
« Antwort #6 am: 12.03.09 - 11:15:51 »
Wenn das Bild in den Richtext eingfügt ist, dann ist es kein Dateianhang. Von daher ist es völlig korrekt, dass die Abfrage false ergibt.

Meines Wissens, gibt es nur eine Methode die Bilder zu bekommen und die geht über DXL.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #7 am: 12.03.09 - 12:32:23 »
Zitat
Meines Wissens, gibt es nur eine Methode die Bilder zu bekommen und die geht über DXL.
Der NotesDXLExporter wäre hierfür mein Ansprechpartner?!
Damit konvertiere ich ja aber das NotesDocument (mein Maildokument) erstmal komplett in ein XML-File! Habe dazu auch schon Code getestet - klappt erstmal, d.h. ich habe auf Platte jetzt ein XML-File meines Maildokuments.
Code
Dim exporter As NotesDXLExporter
Dim streamDXL As NotesStream
Dim fname As String
fname = "D:\temp\DXLoutput.xml"
Set streamDXL = session.CreateStream
Call streamDXL.Open(fname)
Call streamDXL.Truncate
Set exporter = session.CreateDXLExporter(docMail)
Call exporter.SetOutput(streamDXL)
Call exporter.Process
Call streamDXL.Close

Ich will aber im Endeffekt NUR die evtl. enthaltenen Bilder auslesen und speichern.
Habt ihr hierfür Beispiele/Links/Lektüre etc. zur Hand?

Wie kann ich außerdem im Code außerdem eine Fallunterscheidung treffen, dass nur Dokumente abgearbeitet werden sollen, wo Bilder im RichText eingefügt sind?


Danke und Gruß

Rico.
Lotus Notes 8.0.2

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Bilder im RichText
« Antwort #8 am: 12.03.09 - 12:47:43 »
Ich habe es selber noch nicht gemacht, aber schau dir doch mal die Datenbank von Openntf an. In der sollte alles drinnen sein was du brauchst http://www.openntf.org/Projects/codebin/codebin.nsf/CodeBySubType/DE60568D19EA514F86257057006BF308

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Bilder im RichText
« Antwort #9 am: 12.03.09 - 13:31:21 »
Ich habe es schon einmal eingesetzt. Funktioniert problemlos.

Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #10 am: 12.03.09 - 16:45:13 »
Zitat
Ich habe es selber noch nicht gemacht, aber schau dir doch mal die Datenbank von Openntf an. In der sollte alles drinnen sein was du brauchst http://www.openntf.org/Projects/codebin/codebin.nsf/CodeBySubType/DE60568D19EA514F86257057006BF308

Erfolg!!!  ;D
Ich hab den Code von dieser Datenbank bei mir implementiert und noch etwas angepasst... es funktioniert endlich - ich bekomme nun meine RichText-Bilder extrahiert!

Was allerdings bei ein paar wenigen Mails noch seltsam ist:
Es werden teilweise auch die kleinen Icons von "richtigen" Anhängen als gif extrahiert - zusätzlich zu den eigentlichen Attachment-Files!

Werden denn Attachment-Icons auch irgendwie als RichText-Bild am Dokument gespeichert - ist da was bekannt? ...dann würde mich das Verhalten nicht sonderlich wundern.


Gruß

Rico.
Lotus Notes 8.0.2

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Bilder im RichText
« Antwort #11 am: 12.03.09 - 16:58:22 »
Ja sicher müssen die auch im DXL vorkommen. Du kannst mal eines suchen im DXL und schauen, ob diese irgendwie erkennbar sind und diese dann ausnehmen.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bilder im RichText
« Antwort #12 am: 12.03.09 - 17:38:24 »
Verschlüssselt? Aha! Woran erkennt man das ...

An der Eigenschaft SEAL in DocPropertyFenster bei diesem Item

Das ist so nicht ganz richtig:
Die Eigenschaft SEAL bedeutet, dass das Feld verschlüsselt werden KANN.
Erst beim "doc.encrypt" wird das Dokument (und alle Items die das SEAL Property haben) mit den "PublicEncryptionKeys" und/oder "SecretEncryptionKeys" verschlüsselt.
Bei geschlossenem Dokument im Eigenschaftsfenster der Ansicht sieht man dann nur noch das $Seal und $SealData Item

Aber zurück zu deinem Problem: Eingebettete Bilder können mit Notes-Bordmitteln nicht heraus geholt werden. Die einzigen Möglichkeiten die ich hierzu kenne sind per DXL oder das Bild vom HTTP-Task zu holen.

Gruß
Roland
Roland Praml

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

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #13 am: 13.03.09 - 09:16:24 »
Zitat
Ja sicher müssen die auch im DXL vorkommen. Du kannst mal eines suchen im DXL und schauen, ob diese irgendwie erkennbar sind und diese dann ausnehmen.
Ich habe herausgefunden, woran es liegt, dass Icons mit gespeichert werden:

Icons von Attachments und normale BMP´s, die inline im Mailtext enthalten sind, stehen in der DXL-Datei (xml) vom NotesDXLExporter zwischen den Tags <notesbitmap></notesbitmap>.
Durch 'NotesDXLExporter.ConvertNotesBitmapsToGIF=True' werden BMP´s in GIF´s konvertiert. GIF´s werden wiederrum vom Programm mit gespeichert (soll ja so sein). Icons von Attachments sind anscheinend BMP´s bzw. werden von 'NotesDXLExporter.ConvertNotesBitmapsToGIF' definitiv behandelt!

Somit ist klar, warum auch die Icons mit gespeichert werden - da sie ja in gif´s umgewandelt werden. Ein Teufelskreislauf!

Wenn man nun 'NotesDXLExporter.ConvertNotesBitmapsToGIF=False' setzt, werden keine Icons mehr mit gespeichert, allerdings werden dann auch keine BMP´s, die inline im Mailtext angezeigt werden, mehr mit behandelt und gespeichert!  :(

Soweit erstmal der Stand der Dinge...
Fällt dazu jemand noch irgendwas ein?


Gruß

Rico.
Lotus Notes 8.0.2

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Bilder im RichText
« Antwort #14 am: 13.03.09 - 09:19:20 »
Ich bleibe dabei, die Icons sind sicher im DXL anders gekennzeichnet als normale Bilder. Eventuell schau mal die darüberliegenden Tags an. Eventuell kannst du auch mal ein Beispiel DXL posten in dem sowohl Bilder als auch Icons vorkommen. Natürlich anonymisiert.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bilder im RichText
« Antwort #15 am: 13.03.09 - 09:28:04 »
bei Attachments ist ein <attachmentref> herum:

Code
<attachmentref name="run.pdf" displayname="run.pdf">
<picture width="41px" height="47px">
<gif originalformat="notesbitmap">
R0lGODlhKQAvAOcAAP///wAAAOjo6LCwsODg4ODg6EgAAPjY2NjY2EhISMjI0KiosNjY4MDAwMDA
yNDQ0KioqNDQ2PDw8Li4wKCgoPgYGGBgYLCwuOjo8PAICPgIEPggKPgoKFBQUMjIyJiYmKCgqMgA
AOCAgOgACPgQGPgYIPgwMPh4ePiIiEBAQFhYWLi4uOioqOiwsOjg6PgQEPggIPgoMPgwOPhoaPiA
....
LJBCEjh0QcagKLvUVW02WnYuZpppOuUdZ50RYNK1hBduuOErEODn4ow3vqeeDVnHFnTW8UlddJdX
7hCda9XpOeV19snncnmO3vnpjYv+UkAAOw==
</gif>
</picture>
</attachmentref>

Ein Preprocessing mit XSLT sollte es ermöglichen, alle  <attachmentref> und Unterelemente zu entfernen

Den Base64-Stream kann man übrigens mithilfe des NotesMimeEntity wieder in binär umwandeln

Gruß
Roland
Roland Praml

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

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #16 am: 13.03.09 - 09:33:11 »
So, hier mal ein Auszug aus der DXL (xml)... mit 'ConvertNotesBitmapsToGIF = False'. Somit sieht man erstmal die Tags in ihrer eigentlichen Form.

1. Ein BMP, welches inline im Mailtext sichtbar ist:
Code
<par def='2'><picture height='768px' width='1024px'><notesbitmap>
<!-- hier der Base64-Stream des BMP -->
</notesbitmap></picture></par>

2. Ein Icon eines Attachments:
Code
<attachmentref name='BMP-Test.bmp' displayname='BMP-Test.bmp'>
<picture height='47px' width='78px'><notesbitmap>
<!-- hier der Base64-Stream des Icon -->
</notesbitmap></picture></attachmentref>

Rico.
Lotus Notes 8.0.2

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #17 am: 13.03.09 - 09:37:55 »
Zitat
Ein Preprocessing mit XSLT sollte es ermöglichen, alle  <attachmentref> und Unterelemente zu entfernen.
Aha?! Wie meinst Du das bzw. was soll das im Klartext für mein Problem heißen?

EDIT: Ach, das soll heißen, dass ich mittels XSLTransformer aus der DXL die Tags <attachmentref> und alles was dazwischen liegt entfernen soll? Erst danach wird mittels MimeEntity.SetContentFromBytes der Stream in Binärdaten umgewandelt und die Files gespeichert.
Hab ich das richtig interpretiert?

Rico.
« Letzte Änderung: 13.03.09 - 10:36:03 von magic_halli »
Lotus Notes 8.0.2

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Bilder im RichText
« Antwort #18 am: 13.03.09 - 11:45:43 »
Die DB von openntf.org verwendet genau die Technik die ich skizziert habe:
Zitat
- uses internal DXL and MIME classes for extracting the images and decode base64 data

ich hab mal den Code überflogen, die "schnipseln" die Image-Tags mit String-Operationen raus, ich würde das eher über einen SAX-Parser machen (xslt ist hier wohl overkill), man kann dann den DXL-Exporter und den SAX-Parser kaskadieren:

Der Sax-Parser hat als Eingabestrom den NotesDXLExporter.

der SAX-Parser hat dabei 3 relevante Events: Sax_Start_Element, Sax_End_Element, Sax_characters.
dann baust dir eine "State-Machine":
Code
dim gif%, jpg%, attachment%
sub Sax_start_element (source, elName, attr) 
  select case lcase(elName)
     case "attachmentref": attachment = attachment + 1 ' Attachment-Tag betreten
     case "gif": gif = gif + 1 ' gif-tag betreten
  end select
end sub

sub Sax_end_element (source, elName) 
  select case lcase(elName)
     case "attachmentref": attachment = attachment - 1 ' Attachment-Tag verlassen
     case "gif": gif = gif - 1 ' gif-tag verlassen
  end select
end sub

sub Sax_characters(...)
  if attachmentref = 0 and gif = 1 then ' keinen Attachmentref-Tag betreten, aber einen GIF-Tag
    ... exportiere GIF
  end if
end sub

soweit in etwa klar?
analog dazu kannst du auch noch die Fileattachments extrahieren

Gruß
Roland
Roland Praml

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

Offline magic_halli

  • Senior Mitglied
  • ****
  • Beiträge: 348
  • Geschlecht: Männlich
Re: Bilder im RichText
« Antwort #19 am: 13.03.09 - 11:54:21 »
Zitat
Die DB von openntf.org verwendet genau die Technik die ich skizziert habe
Wo finde ich denn diese DB - ich finde die einfach nicht.
Lotus Notes 8.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz