Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Sebastianh am 15.07.09 - 15:08:01

Titel: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 15.07.09 - 15:08:01
Hallo,

da ich (wie einige sicherlich bereits mitbekommen haben :) ) versuche, ein Dokument ausserhalb von Notes darzustellen, benutze ich im DXL-Exporter die Funktion
Code
dxlExporter.setConvertNotesBitmapsToGIF(true);

Im DXL steht dann als Tag:
Code
<picture height="32px" width="496px" align="baseline">
<notesbitmap>
xP/cAAQAAQ...

hier stellt sich mir bereits die Frage, ob in den Tags nicht irgendwo bereits eine Information der Sorte "gif" angegeben sein sollte.

Das eigentliche Problem ist aber, dass der Base64 kodierte String nie (egal wie groß das Ursprungsbild war) größer als 200 Zeichen ist. Meist 2 Zeilen a 77 Zeichen, die dritte Zeile enthält dann max. 10-30 Zeichen. Wenn ich diese Strings mit:
Code
String base64 = "hierdieBase64Zeichenkette";
BASE64Decoder be = new BASE64Decoder();
byte[] b_source =  be.decodeBuffer(base64);
in Binärdaten wandele, bekomme ich auch Arraygrößen, die weit unter den erwarteten liegen.
Habe ich evtl. irgendwas übersehen?

(edit: die so erzeugten gif-Dateien sind natürlich nicht lesbar)

Gruß,

Sebastian
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 16.07.09 - 09:05:39
nungut, was die erste Frage angeht, hätte ich wohl mal genauer in die Hilfe schauen sollen:

Zitat
Converted bit maps result in the following DXL:
<gif orignalformat='notesbitmap'>gif representation</gif>
While non-converted bit maps are:
<notesbitmap>notes representation</notesbitmap>
On import, GIF files are converted back to Notes format if the "originalformat" attribute is present.

Das erklärt aber nicht, wieso trotz der auf "true" gesetzten  "setConvertNotesBitmapsToGif"-Property noch <notesbitmap>-Elemente erzeugt werden. Muss ich das verstehen?
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 16.07.09 - 10:03:38
auf meinem 7er Testsystem mit einer selbstgebastelten HTML-Mail, wird ein gif-tag mit entsprechend viel Base64-Code als Inhalt erzeugt. Ausgelesen und dekodiert ergibt es aber trotzdem nicht das Ergebnis, das ich mir vorstelle (geschriebende gif-Datei nicht als solche zu erkennen (von div. Viewern)). Selbst wenn dem so wäre, warum es auf dem 8er Produktivsystem nicht funktioniert, weiss ich dann immer noch nicht.
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: pram am 18.07.09 - 16:22:53
Dein Base64 Decoder funktioniert aber schon? bei uns klappt das.

Eine GIF-Datei beginnt übrigens immer mit der Zeichenfolge "GIF89" oder "GIF86" (bzw. wenn es noch Base64-codiert ist mit "R0lGOD")
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 27.07.09 - 10:48:25
ich benutze zum dekodieren den sun.misc.BASE64Decoder, ich denke nicht, dass der mir irgendwelche "Übersetzungsfehler" produziert.

Allerdings habe ich in den dxl Files immer noch die Struktur:
Code
<picture ... >
   <notesbitmap ... >
      xp9...

offensichtlich wird vom dxlexporter nicht nach gif transferiert, obwohl es in den Optionen eingestellt ist. Irgendwer eine Idee, woran das liegen könnte?
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 27.07.09 - 13:33:29
hab jetzt das (http://www-01.ibm.com/support/docview.wss?rs=475&context=SSKTWP&dc=DB520&uid=swg21210752&loc=en_US&cs=UTF-8&lang=en&rss=ct475lotus) gefunden. Kann mir jemand sagen, ob/wie ich diese "Database Property" auslesen kann? Zugriff auf einen Designer habe ich leider nicht.
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 27.07.09 - 13:55:04
ok, selber gemerkt, dass ich dazu keinen Designer brauche. Im Client unter Datenbank->Eigenschaften kann mans ja einsehen. Allerdings, Property ist nicht gesetzt. Daran kann es also auch nicht liegen.
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 28.07.09 - 14:30:37
Ich bin immer noch nicht weiter, nach wie vor die selbe Situation,:
Code
dxlExporter.setConvertNotesBitmapsToGIF(true);

erzeugt (zb):

Code
<picture height="32px" width="189px" align="baseline">
<notesbitmap>
xP9SAAQAAQAAADoAAAAAAAAAAAAAAAAAaHR0cDovL3d3dy5hbGRpLXN1ZWQuZGUvZGUvbWVkaWEv
aW1nL2t3MzIwOV9tb18xNWJfMXgxLmpwZ5UAJgAAAL0AIAAAAAAACAAAAAAAAAC9ACAAAAAAAAAA
AAAAAAAA
</notesbitmap></picture>

Hat überhaupt schonmal irgendjemand erfolgreich mit der Option gearbeitet unter Java?
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: pram am 28.07.09 - 18:15:05
ok, selber gemerkt, dass ich dazu keinen Designer brauche. Im Client unter Datenbank->Eigenschaften kann mans ja einsehen. Allerdings, Property ist nicht gesetzt. Daran kann es also auch nicht liegen.
Welche Property meinst du damit?

Unter Java hab ich den DXL-Exporter noch nicht verwendet, unter LS funktioniert der GIF-Export jedenfalls (bei mir)

Gruß
Roland
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 29.07.09 - 09:43:14
ok, selber gemerkt, dass ich dazu keinen Designer brauche. Im Client unter Datenbank->Eigenschaften kann mans ja einsehen. Allerdings, Property ist nicht gesetzt. Daran kann es also auch nicht liegen.
Welche Property meinst du damit?
Ok, vielleicht hätte ich nicht nur den Link setzen, sondern auch direkt ein Zitat einbinden sollen:
Zitat von: http://www-01.ibm.com/support/...
This setting works as intended as long as the Database property "Display images after loading" is not used.
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: pram am 29.07.09 - 16:20:48
ja, den Link hab ich nicht gesehen  :o, den hast du zu gut versteckt....
Also diese Property ist bei mir bei allen DB's "aus".
Falls sie ein ist, sehe ich keine Möglichkeit, einfach an die Bilder ran zu kommen, da man die Dokumente im UI öffnen und speichern musst.

Gruß
Roland
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 29.07.09 - 16:36:00
sorry wegen dem Link, nächste mal mache ich es besser kenntlich. :)

Leider bringt mich das nur so gar nicht weiter, da ich die Property ja wie gesagt in den entsprechenden Datenbanken schon gecheckt hatte. Überall ausgeschaltet.
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: pram am 30.07.09 - 09:17:31
Also, ich hab jetzt nochmal geschaut. In LS klappt es definitiv wenn die Property ausgeschaltet (= KEIN Haken) ist. War bei dieser DB immer aus (und ist soweit ich weiß auch die Defaulteinstellung)

Code
<border style="solid" width="1px"/>
<gif originalformat="notesbitmap">
R0lGODlhYwFxAOcAAP///+jo6ODg4AAAAMDAwICAgNj

Unter java-> keine Ahnung. Evtl ist auch die Clientversion dran schuld.
Schau doch mal ob es hiermit klappen würde, bevor du alle Properties der DB verstellst:
http://www.openntf.org/Projects/codebin/codebin.nsf/0/DE60568D19EA514F86257057006BF308

Gruß
Roland
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 30.07.09 - 10:30:23
Danke, aber ich hab absolut keine Ahnung Ahnung von LS. Hab die Datei zwar runtergeladen und im Designer geöffnet und gesehen, dass ein Agent enthalten ist, wie ich diesen aber nun aus meiner Javaanwendung heraus aufrufe, weiss ich nicht. Ausserdem habe ich die Methode, die dort in dem Agenten aufgerufen wird nicht finden können, was aber wohl eher daran liegt, dass ich von der Handhabe des Designer so gut wie null Ahnung habe.
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: pram am 30.07.09 - 11:50:24
Also, ich dachte eigentlich, dass du einfach ausprobierst, ob du mit LS einen korrekten Export hin bekommst.

(Kurze Zwischenfrage: Ist das jetzt eine fertige Lösung oder von dir in Java programmiert? Machst du das nicht im Designer oder wie? Wie gut kennst du dich in der Notesprogrammierung allgemein aus?)

Um den Fehler einzugrenzen würd ich folgendes machen.
0. im LS-Agent ggf. den Pfad ausbessern (standardmäßig auf C:\)
1. DB im Client öffnen, in der Ansicht ein Dokument wählen, z.B. Multiple mixed images (imported and pasted)
2. Aktion->Export pictures from selected
Es sollten alle Bilder korrekt exportiert werden

dann kannst du den Agenten + Script Lib in deine Anwendung kopieren und selbiges ausprobieren.
Wenn hier auch alle Bilder korrekt exportiert werden (wovon ich ausgehe) liegt der Fehler NICHT an den DB-Properties.

Da du ein Dokument außerhalb von Notes darstellen willst, könntest du das auch über den HTTP-Task holen?

Gruß
Roland
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 30.07.09 - 12:37:38
...
(Kurze Zwischenfrage: Ist das jetzt eine fertige Lösung oder von dir in Java programmiert? Machst du das nicht im Designer oder wie? Wie gut kennst du dich in der Notesprogrammierung allgemein aus?)
Das ganze ist eine von mir in Java implementierte Geschichte. Vom Designer habe ich wie gesagt überhaupt keine Ahnung. Ich implementiere meinen Code in Eclipse und seh dann, was dabei rumkommt :)
"Auskennen" ist bzgl. Notesprogrammierung vielleicht etwas hochgegriffen. Ich wurde zum Projekt beginn ins kalte Wasser geworfen nach dem Motto : "mach mal!", und hatte vorher noch nie einen Dominoserver o.Ä. angefasst. Dabei wurde mir hier ja auch schon jede Menge Hilfestellung gegeben, wofür ich auch überaus dankbar bin. Inzwischen komme ich mit der API ja auch ganz gut zurecht und mein Projekt erfüllt auch seinen Zweck, die letzte Hürde ist halt die korrekte Behandlung von aus dem Dominoserver extrahierten HTML-Dokumenten (speziell: die korrekte Darstellung der enthaltenen Grafiken).

Um den Fehler einzugrenzen würd ich folgendes machen.
0. im LS-Agent ggf. den Pfad ausbessern (standardmäßig auf C:\)
1. DB im Client öffnen, in der Ansicht ein Dokument wählen, z.B. Multiple mixed images (imported and pasted)
2. Aktion->Export pictures from selected
Es sollten alle Bilder korrekt exportiert werden

dann kannst du den Agenten + Script Lib in deine Anwendung kopieren und selbiges ausprobieren.
Wenn hier auch alle Bilder korrekt exportiert werden (wovon ich ausgehe) liegt der Fehler NICHT an den DB-Properties.

ok, das werde ich mal versuchen.

Da du ein Dokument außerhalb von Notes darstellen willst, könntest du das auch über den HTTP-Task holen?


Das diese Möglichkeit besteht, war mir zwar bereits bewusst, allerdings habe ich bei meinen Recherchen dazu, wenig Infos gefunden, wie man an diesen Task (java-seitig) rankommt.

Inwischen habe ich die Mails mal mit javax.mail aus dem Dominoserver geholt, und siehe da, wunderbarer HTML-Code, allerdings hilft mir das nicht wirklich, denn dazu müsste ich jedes einzelne Benutzerkennwort kennen, ich bin aber auf das Rechtemanagement (und Gruppenverwaltung) (ich bin admin und darf alles!) Seitens Domino angewiesen.

Trotzdem vielen Dank für Deine Bemühungen.

Gruß,

Sebastian

Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 14.08.09 - 10:50:17
Da ich nach wie vor keine Lösung für mein Problem gefunden habe:

Wie komme ich denn javaseitig an den HTTP-Task ran? Könnte mir in die Richtung gehend evtl. mal jemand einen Denkanstoss geben? Danke!
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: pram am 14.08.09 - 15:29:09
Per TCP/IP auf die IP des Servers mit Port 80 verbinden und einen entsprechenden HTTP-Request absetzen
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: flaite am 15.08.09 - 19:45:38
jakarta commons HTTPClient.
Beispiele sind im download dabei.
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 19.08.09 - 10:40:07
Ok, danke dafür schonmal. Allerdings schliesst sich hier direkt die nächste Frage an. Eine Url zu einem Dokument sieht ja folgendermaßen aus:

Code
http://localhost/mail/abc.nsf/38d46bf5e8f08834852564b500129b2c/23ddf72b2fdf5805c12575460049c8a8?OpenDocument

Wenn ich jetzt im Javacode via
Code
String notesUrl = dokument.getNotesURL();
versuche an eben diese Informationen zu kommen, um mir die URL zusammenzubasteln, bekomme ich sowas wie:

Code
notes://host@domain/__C12574CD0039310A.nsf/0/48BFEFCF4F037AB9C125754600499DB5?OpenDocument
(die Urls gehören jetzt nicht beide zum selben Dokument)

kann ich davon ausgehen, dass die URL die ich von dokument.getNotesURL() bekomme, (abgesehen von dem prefix "notes") genau die ist, die ich brauche um via http-task an das Dokument zu kommen? (irgendwie erschliesst sich mir nicht wirklich, was der erste Teil (also ...nsf/X/92479238284ß?OpenDocument .. X) sein soll, und warum hier ein (offensichtlich) interner Mailboxname benutzt wird)
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 19.08.09 - 11:52:52
offensichtlich ist dem nicht so:

Dokumentenurl im Dominowebmailer:
Code
http://host@domain/mail/abc.nsf/38d46bf5e8f08834852564b500129b2c/8e70be289eac5f40c12576170035eefe?OpenDocument

Dokumentenurl aus API (mit ersetzungen bis zum Mailboxfile):
Code
http://host@domain/mail/__C12574CD0039310A.nsf/0/8E70BE289EAC5F40C12576170035EEFE?OpenDocument

dieses mal ist es dasselbe Dokument, versuche ich allerdings zweite URL in einem Browser aufzumachen bekomme ich eine 404 zurück.

 ???
Titel: Re: DXL-Exporter und Gif (setConvertNotesBitmapsToGIF)
Beitrag von: Sebastianh am 19.08.09 - 15:50:52
ups, wie peinlich. Manchmal ist das so eine Sache mit den Bäumen und dem Wald.

Code
dokument.getHttpURL();

tut genau das, was ich will. Manchmal sollte man einfach ein wenig genauer hinschauen. Sorry.

(trotzdem erklärt das den Sachverhalt an sich nicht, aber solange es funktioniert, bin ich ja zufrieden!)