AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
09.05.21 - 15:21:52
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Lotus Notes / Domino 9
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  Eingebettete Bilder (zum Nachladen aus dem Internet) per Script entfernen
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Eingebettete Bilder (zum Nachladen aus dem Internet) per Script entfernen  (Gelesen 763 mal)
SD
Aktives Mitglied
***
Offline Offline

Beiträge: 155


« am: 10.02.21 - 15:54:34 »

Hallo allerseits,

dieses Thema bringt mich leider ein wenig zur Verzweiflung.

Wir haben eine Applikation, in die wir per Button Mails importieren und dann weiterverarbeiten können. So weit so einfach. Leider kommt es manchmal vor, dass diese Mails eingebettete Bilder haben, die aus dem Internet nachgeladen werden können. Das ist in der Regel irgendwelches Zeug in der Signatur, was uns in dieser Applikation gar nicht interessiert.

Das Script arbeitet so, dass es Felder aus dem Backend-Dokument der Mail in ein neues Backend-Dokument einer anderen Datenbank kopiert und dann im Frontend zur Anzeige bringt. Das funktioniert auch, wobei das Bild dann mit einem roten x dargestellt wird. Will man das Frontend-Dokument dann speichern, kommt "Cannot save bitmap to disk.".

Leider ist es kein Error im eigentlichen Sinne, also ein "On Error"-Statement springt nicht darauf an. Die Meldung wird nach dem QuerySave ausgelöst. Ich kann sie wohl nicht irgendwie weg handlen.

Ich möchte das Bild eigentlich auch gar nicht retten oder sowas. Ich will es eigentlich loswerden. Die User können vor dem Speichern das ganze Dokument durchscrollen und alle roten x'e entfernen. Das funktioniert, ist aber sehr nervtötend. Daher würde ich im Grunde gerne genau das per Script machen.

Nun hab ich im Backend ein RichtextItem "Body" (das wohl aus mehreren Einzelitems besteht), das irgendwann beim Routing wahrscheinlich mal aus einem MIME in Richtext konvertiert wurde. Das behauptet allerdings keine "EmbeddedObjects" zu haben, was ohnehin komisch ist, weil meine Test-Mail auch normale eingettete Bilder enthält. Ich hätte eigentlich zumindest erwartet diese dort zu finden.

Nun gehen mir ein wenig die Ideen aus, wie ich mein Richtextitem von diesem Bild bzw. diesem Link auf ein Bild befreien kann. Am liebsten wäre mir ein "wenn du es nicht mit Bild speichern kannst, dann speicher es halt ohne"-Flag, aber sowas scheint es nicht zu geben. Wenn ich im RichtextItem irgendwie rumschneiden könnte, würde das auch gehen. Aber ich finde leider keinen Weg das Object zu lokalisieren und dann zu bearbeiten. Zur Not würde es sogar gehen, das im FrontEnd-Feld rauszufummeln, wenn ich es irgendwie identifizieren könnte.

Hatte hier vielleicht schon mal irgendwer dieses Problem?

Gruß
Stefan
« Letzte Änderung: 12.02.21 - 14:16:27 von SD » Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1209



« Antworten #1 am: 10.02.21 - 16:37:45 »

Schon mal geprüft ob die Bilder im EmbeddedObjects vom NotesDocument zu finden sind?
Ansonsten bleibt ja nur noch die Nachbearbeitung der XML/DXL Datei übrig ...
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
Ralf_B
Aktives Mitglied
***
Offline Offline

Geschlecht: Männlich
Beiträge: 112


« Antworten #2 am: 10.02.21 - 17:57:26 »

Da mich das Thema interessiert:
Ich habe mal nachgesehen und ich sehe solche Images nicht in embeddedObjects.
Aber als In-Line Image
Ytria zeigt mir auch Teilweise Sonderzeichen an:

Schau mal ob das hier weiterhilft:
https://atnotes.de/index.php/topic,55904.0.html

Gruß
Ralf
Gespeichert
SD
Aktives Mitglied
***
Offline Offline

Beiträge: 155


« Antworten #3 am: 12.02.21 - 12:17:10 »

Hallo,

DXL ist ein super Stichwort und ich bin nahe dran das Problem tatsächlich zu lösen! Vielen Dank!

Code:
Dim nDXLe As NotesDXLExporter
Set nDXLe = s.Createdxlexporter()
Dim sTemp As String
sTemp = nDXLe.Export(mailDoc)

Damit bekomme ich schon mal alles als XML. "<notesbitmap>" ist dann er Übeltäter. Den schneide ich raus.

Code:
Dim nDXLi As NotesDXLImporter
Set nDXLi = s.Createdxlimporter()
Call nDXLi.Import(sTemp, mailDoc.Parentdatabase)

Damit bekomme ich das XML wieder in meine Datenbank reinimportiert. Allerdings ist es so leider ein neues Dokument und was noch schlimmer ist, ich habe es nicht im Zugriff. Wenn ich jetzt das NotesDocument-Object hätte, könnte ich damit weitermachen. Ich habe mir das frisch importierte Dokumente mal von Hand rausgesucht und das funktioniert wirklich. Das Bild ist weg und damit auch der Fehler. Aber wie komme ich nun mit meinem Script an das Dokument ran? Die Import()-Methode kann man offenbar nur callen. Die gibt mit nicht das BackEnd-Dokument zurück, das sie gerade importiert hat. :-(

Ich habe mir jetzt recht plump damit beholfen das LastDocument aus der Datenbank zu holen, aber es ist ein wenig Glückssache, ob das das richtige ist. Das ist etwas unbefriedigend, weil ich das dann ja gleich wieder lösche und ich nicht ausversehen das falsche löschen will. Gibt es da eine elegantere Lösung?

Code:
Set otherDoc = mailDoc.Parentdatabase.Alldocuments.Getlastdocument()

Gruß
Stefan
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1209



« Antworten #4 am: 12.02.21 - 12:49:24 »

In der NotesDXLImporter Klasse gibt es diese Methoden und Eigenschaften: "GetFirstImportedNoteID", "GetNextImportedNoteID" und "DocumentImportOption".
Wobei "DocumentImportOption" in deinem Fall schon ausreichen sollte ...
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
SD
Aktives Mitglied
***
Offline Offline

Beiträge: 155


« Antworten #5 am: 12.02.21 - 14:16:15 »

Oh, das hatte ich übersehen. Funktioniert wie ne Eins! Vielen Dank euch!

Gruß
Stefan
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: