Autor Thema: Bilder im RichText  (Gelesen 16806 mal)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
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 #21 am: 13.03.09 - 13:18:48 »
Danke.
Ich hatte Dich leider ein wenig falsch verstanden! Mein Fehler!  ;) Sorry.
Diese DB bzw. den Code habe/nutze ich bereits. Ich dachte nur, Du hast dort Code zum SAXParser gefunden. Das hat mich eben nur gewundert...

Summary:
Ich möchte aus meinem vorhandenen DXLExporter (XML) "einfach" alle Tags <attachmentref>...</attachmentref> und alles was dazwischen liegt entfernen/löschen. Dazu sollte/kann man den NotesSAXParser verwenden?! (XSLT nicht nötig!; DOMParser evtl. noch eine Alternative?)
Dieser bekommt als Input meinen vorhandnen DXLExporter, parst/bearbeitet diesen und liefert als Output den veränderten DXLExporter zurück.
Mit diesem arbeite ich dann ganz normal weiter.

So habe ich das jetzt verstanden und es erscheint mir logisch. Werde dazu die Hilfe interviewen. Dann sollte es schon klappen?!


Ich danke euch für euer Bemühen und die "Geduld"  ;)


Gruß

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 #22 am: 13.03.09 - 17:38:51 »
deine Summary ist soweit richtig.

für jedes öffnende Element (z.B. "<gif>") löst der Sax-Parser das Event "Sax_Start_Element" aus.
Hier erhöhst du einen Zähler wenn das Element vorbei kommt. (Zähler deshalb weil manche Elemente geschachtelt vorkommen können).
Evtl musst du dir noch die Attribute für den Filenamen merken

für die schließenden Tags erniedrigst du den Zähler in der Sax_End_Element.

Für den Text zwischen den Tags wird die Sax-Characters-Funktion aufgerufen.
Hier kannst du anhand der Zähler überprüfen, wo du dich befindest...

Steht der Zähler für die GIF-Tags nun nicht auf 0 dann befindest du dich zwischen einen Gif-Tag, also hier irgendwo: <gif>  ;D </gif>
(wenn gleichzeitig der attRef-Counter <> 0 ist, bist du hier irgendwo <attachmentref>...<gif> ;D </gif>..</attachmentref>)

Die Sax-Characters-Fkt bekommt als Eingabestrom den Base64-codierten String zwischen den Tags. Den wandelst du mittels NotesMimeEntity (siehe openntf-DB) nach binär und schreibst ihn auf die Platte

XSLT ist nicht nötig da du hier nur schwierig mehrere Bilder extrahieren kannst. DOM-Parser ginge evtl auch, ist aber meist sehr ressourcenhungrig. (und unter Notes im Gegensatz zu anderen Implementierungen wenig bis kaum zu gebrauchen)



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 #23 am: 16.03.09 - 16:31:56 »
Ich konnte mein Problem nun endlich lösen!  ;D

Summary:
Ich wollte RichText-Pictures aus einer Mail extrahieren und speichern.
Dazu habe ich als Codegrundlage die Datenbank von Openntf genommen - die 'ExportPictures'-Funktion aus der Scriptbibliothek 'ExportPicturesLib'.
Hierbei wird aus einem Dokument mittels DXLExporter ein XML-String erzeugt (inkl. aller Inline-Pictures). Aus diesem XML-String werden dann alle Inline-Pictures auf Platte gespeichert. Funktioniert soweit erstmal prima, aber...

mein Problem hierbei:
Es wurden auch alle Attachment-Icons von Nicht-RichText-Bildern mit ausgeleitet/gespeichert. Das soll in meinem Fall (und ich denke auch allgemein) eigentlich nicht sein!

Lösung:
Nach etlichen Versuchen mittels NotesSAXParser die Attachment-Icons aus dem XML-String rauszuparsen und alles wieder irgendwie in DXL bzw. XML-String "zusammenzubauen", bin ich dann auf eine sehr einfache Lösung gestoßen!!!  ;)  Ich frag mich jetzt noch, warum nicht gleich so!  :-:
Der Anfang der benutzten 'ExportPicture'-Funktion aus der Datenbank von Openntf.org sieht so aus:
Code
...
Set thisDB = session.CurrentDatabase
Set exporter = session.CreateDXLExporter
exporter.ConvertNotesBitmapsToGIF = True
...
Lediglich durch einfügen einer Zeile ergibt sich folgender Code, wobei hier alle Pictures, welche zwischen den Tags <attachmentref...>...</attachmentref> stehen und Attachment-Icons repräsentieren, nicht mit in den XML-String übernommen werden!!! Das wars dann auch schon - so einfach kanns manchmal laufen!
Code
Set thisDB = session.CurrentDatabase
Set exporter = session.CreateDXLExporter	
exporter.ConvertNotesBitmapsToGIF = True
' NEU: auslassen von Attachment-Icons im XML-String
exporter.OmitRichtextAttachments = True
...
Allerdings ist diese Property erst ab Release 8 verfügbar.

Ich danke euch für eure Hilfe/Unterstützung/Tips!!!


Danke und Gruß

Rico.
Lotus Notes 8.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz