Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: xyungel am 17.02.10 - 11:34:01

Titel: Java bild laden
Beitrag von: xyungel am 17.02.10 - 11:34:01
Hallo Notes-(Java-)freunde ;)

ich habe ein Problem beim laden von Bildressourcen in Java.
Unter Notes 8.5.1 habe ich unter dem Punkt Ressourcen ein Bild "logo.jpg" hinzugefügt.
Wie kann ich denn diese Datei in meine NotesAgent class laden?

Beim versuch mit

Code
java.awt.Image awtImg = java.awt.Toolkit.getDefaultToolkit().createImage("Res\\logo.jpg");
com.lowagie.text.Image image2 = com.lowagie.text.Image.getInstance(awtImg, null);

bekomme ich folgende Fehlermeldung in der Javaconsole:

Code
java.io.IOException: java.awt.Image fetch aborted or errored
	at com.lowagie.text.Image.getInstance(Unknown Source)
	at com.lowagie.text.Image.getInstance(Unknown Source)
	at JavaAgent.NotesMain(Unknown Source)
	at lotus.domino.AgentBase.runNotes(Unknown Source)
	at lotus.domino.NotesThread.run(Unknown Source)

Hat jemand von euch eine Idee? Bzw. ist es überhaupt möglich diese Ressourcen zu nutzen?

Vielen Dank schonmal

Stefan
Titel: Re: Java bild laden
Beitrag von: flaite am 17.02.10 - 15:07:57
Wenn du magst, kannst du die jpg testweise irgendwo ins Dateisystem legen und dann mit dem folgenden Code drauf zugreifen:

Code

String pthImg = "C:/temp/logo.nsf";

java.awt.Image awtImg = java.awt.Toolkit.getDefaultToolkit().createImage(pthImg);
if (awtImg == null) throw new IllegalStateException("Die Datei \"" + pthImg + "\" kann nicht geladen werden. PDF Generierung wird abgebrochen.");
com.lowagie.text.Image image2 = com.lowagie.text.Image.getInstance(awtImg, null);

Titel: Re: Java bild laden
Beitrag von: flaite am 17.02.10 - 15:48:05
Ich hab das letztens so gelöst, dass ich das Image in einem RT Feld von einem Konfig-Dokument hatte (so ist es vom Anwender änderbar). Das kopiere ich dann als Datei (geht) in das Temp Direktory des Servers. Geht mit System.getProperty(tryGoogle);
Der Agent für PDF-Generierung checkt dann, ob diese Datei vorhanden ist (File.exists()). Wenn false, dann kopier die erstmal rüber. Auf Dateien in tempdir kannst du dann per absoluten Pfad drauf zugreifen.
Titel: Re: Java bild laden
Beitrag von: xyungel am 17.02.10 - 16:55:47
Danke für die Antwort.

hab jetzt noch eine Lösung gefunden. Vllt. ja auch für dich hilfreich:

Code
java.awt.Image awtImg = ImageIO.read(this.getClass().getClassLoader().getResourceAsStream("logo.jpg"));

Damit bekommt man den InputStream und kann diesen in ein Bild umwandeln.
Titel: Re: Java bild laden
Beitrag von: flaite am 17.02.10 - 22:24:38
Gut zu wissen.  ;D Weiß allerdings nicht, ob das mit Notes 7 funktioniert.
Titel: Re: Java bild laden
Beitrag von: xyungel am 18.02.10 - 13:21:57
scheint zu funktionieren.

eine andere alternative:

ich lade mir das bild in ein RT-Item im profilDoc
und hole mir dann das embedded object und lese den inputstream ein.

Code
EmbeddedObject eo = pdoc.getAttachment("logo.jpg");
java.awt.Image awtImg = ImageIO.read(eo.getInputStream());
Titel: Re: Java bild laden
Beitrag von: flaite am 18.02.10 - 13:27:03
Cool. Allerdings würd ich sowas nie in einem Notes Profil-Dokument sondern in einem "normalen" Dokument speichern, weil die Inhalte von Profil-Dokumenten manchmal seltsam gecached werden. Zumindest haben wir bei solchen Anwendungsfällen schlechte Erfahrungen mit Profil-Dokumenten gemacht.