VuuRWerK
I'm new here

Datei aus Medienstore in JSP verwenden

Hallo liebe Community,

wie kann ich eine referenzierte Datei aus dem medienstore in JSP verwenden? Genauer geht es um einen Font. $CMS_REF(font)$ gibt mir zwar den FS-Pfad zurück nur kann JSP nichts damit anfangen. Auch application.getRealPath("$CMS_REF(font)$") gibt einen falschen Pfad zurück.

Ich benötige den Font zum generieren von Bildern was ich mithilfe von JSP umsetzen möchte.

Folgendes kleines Beispiel-Scriptlet soll mein Problem veranschaulichen:

<%@ page

language="java"

contentType="text/html; charset=UTF-8"

pageEncoding="utf-8"

import="java.util.*, java.awt.*, java.io.*"

%>

<%

request.setCharacterEncoding("UTF-8");

String error = "file exists, YAY! :)";

File f = new File("$CMS_REF(font)$"); // auch abs: 1 oder 2 bringt kein besseres Ergebnis

if (!f.exists()) {

          error = "file not found!";

}

//Font font = Font.createFont(Font.TRUETYPE_FONT, new FileInputStream("$CMS_REF(font, abs: 2)$"));

%>

Error: <%=error %><br />

realPath: <%=application.getRealPath("$CMS_REF(font)$") %><br />

Ich hoffe mir ist noch zu helfen Smiley Happy

Viele Grüße und schon mal Danke

Christian

0 Kudos
5 Replies
00schmidt
I'm new here

Hallo Christian,

-- getRealPath() ist immer heikel --

ich würde als erstes hinterfragen, ob diese Font-Datei wirklich eine Ressource ist, die durch das CMS verwaltet werden muss. Ich würde annehmen, dass diese weniger redaktionellen Charakter hat und eher in einem Development-Zyklus zu verwalten ist. Das Lesen der Datei und auch die ganze weitere Bildergenerierung sollte in eine eigene Bibliothek ausgelagert werden. Die Datei würde man als Ressource ins jar packen und dann entsprechend lesen

reader = new BufferedReader(new InputStreamReader(new ClassPathResource("{com.yourcompany.package.filename}").getInputStream())

Hoffe, der Hinweis gefällt auch wenn er keine direkte Lösung des Problems bringt.

Grüße aus Hamburg

Michael

0 Kudos

Hallo Michael,

vielen Dank für Deine Antwort.

Meine Versuche mit getRealPath waren auch eher aus Verzweiflung weil ich einfach schauen wollte ob es ggf. damit funkrioniert Smiley Wink

Die Auswahl des Fonts muss ich leider beim Redakteur belassen, da dieser einen passenden Font auswählen muss, dasselbe gilt dann noch für das Hintergrundbild welches genutzt werden soll. D.h. ein festlegen eines Fonts ist leider nicht möglich und eben genau der Grund warum ich es auf dem JSP-Weg versuche. Externe Bibliothek ist schon klar aber auch dieser muss ich das ausgewählte Bild und den Font übergeben können, aber so das ich am Ende mit Java-eigenen Mitteln arbeiten kann.

Grüße

Christian

0 Kudos

Hallo Christian,

ja verstehe. Das mit den Fontdateien (nehme an, dass es da eine definierte Menge gibt) könnte man über eine Mappingtabelle (Name in FS-Auswahlliste<->ClasspathResourceName) machen. Aber um die Bilddateien kommt man natürlich nicht rum. Wird sicher ziemliches Gefrickel hier einen richtigen Pfad oder alternativ eine URL zum Auslesen per URLConnection zu bekommen. Wenn es da eine andere schlaue Lösung gibt, würde mich das auch interessieren.

Viel Glück

M

0 Kudos

Ich würde auch die Generierung der Bilder in ein Servlet bzw. Taglib auslagern.

Dem Servlet/Tag übergibt man dann den Pfad zum Font und Bild (CMS_REF + abs:2).

In der web.xml konfiguriert man den absoluten Pfadprefix zur webapp. Also zum Beispiel /opt/tomcat/webapps/meinprojekt.

Wenn man die Webapp als FirstSpirit-Modul umsetzt, ist die web.xml über die Adminkonsole pflegbar. Man könnte sogar einen Konfigurationsdialog bauen, halte ich aber für sowas eher unnötig.

0 Kudos

Ich schalte mich mal ein, weil ich den Verdacht habe, das hier eventuell aneinander vorbei geredet wird.

Unten stehender Kommentar lässt mich verumten, das der Redakteur in FirstSpirit Text, Schriftart und Hintergrund-Bild bestimmt, und dann mit diesen Informationen ein neues Bild erzeugt werden soll, welches auf der Webseite erscheinen soll:

Die Auswahl des Fonts muss ich leider beim Redakteur belassen, da dieser einen passenden Font auswählen muss, dasselbe gilt dann noch für das Hintergrundbild welches genutzt werden soll.

Wenn ich mit meiner Vermutung richtig liege, wäre eine JSP / Servlet / Tag-Lib Lösung überdimentsioniert. Diese Anforderung sollte sich vollständig mit FirstSpirit-Template-Mitteln umsetzen lassen, siehe dazu die Dokumentation der font-Funktion.

Peter
0 Kudos