Estoy haciendo la carta de generación con iText (pdf/rtf) en java servlet y tengo un problema con el acceso a las imágenes. Las imágenes están en la WebContent/carpeta de imágenes. Cuando se ejecuta en un servidor local y señalando la ruta de acceso completa del directorio de imágenes (c://eclipse/myproject/WebContent/images/letterHead.jpg) su trabajo, pero no se ejecuta en el servidor con el directorio («WebContent/images/letterHead.jpg»).

El proyecto está siendo implementado como una GUERRA en un servidor tomcat, terminando así con una dirección similar a la

http://someserver:8081/projectName/someJSP.jsp

No entiendo cómo hacer referencia a las imágenes relativamente en este entorno, y cualquier ayuda sería muy apreciada.

Aquí está mi código

Image imghead = Image.getInstance("WebContent/images/letterHead.jpg");
imghead.setAbsolutePosition(35,770);
imghead.scaleAbsolute(125, 42);
document.add(imghead);

OriginalEl autor Jon | 2010-03-05

6 Comentarios

  1. 13

    Nunca se debe utilizar rutas relativas en java.io cosas. Usted será dependiente en el directorio de trabajo actual que no es de ninguna manera controlable en el caso de una aplicación web. Utilice siempre absoluta disco rutas del sistema de archivos. Por lo tanto, c:/full/path/to/file.ext.

    Puede utilizar ServletContext#getRealPath() para convertir a un pariente de la web de la ruta de acceso absoluta a un archivo de disco ruta de acceso del sistema. La relativa ruta web se basa en que el público de la carpeta webcontent que es en tu caso lo que /WebContent. Así, usted necesita para reemplazar la primera línea de código anterior por:

    String relativeWebPath = "/images/letterHead.jpg";
    String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
    Image imghead = Image.getInstance(absoluteDiskPath);
    //...
    Funciona perfectamente! Muchas gracias.

    OriginalEl autor BalusC

  2. 1

    Siguiente fragmento de código puede ayudar…

    String path = request.getContextPath();
    String split_path[] = path.split("/");
    path = request.getRealPath(split_path[0]);
    String imagePath="\resources\images\letterHead.jpg";
    Image image = Image.getInstance(path+imagePath);

    OriginalEl autor Balaji Vinnakota

  3. 0

    Código siguiente puede utilizarse para tener acceso a ruta de la imagen dentro de una clase java.

    URL imageUrl = getClass().getProtectionDomain().getCodeSource().getLocation();
    Image img=Image.getInstance(imageurl+"../../../some/images/pic.gif");    

    OriginalEl autor Sana

  4. 0

    Así que yo tenía el mismo problema, yo quería añadir una imagen al pdf, pero a través de una ruta de acceso relativa, así que cuando me hecho un programa ejecutable que iba a funcionar en cualquier equipo, incluso si tenía o no la imagen guardada.

    He encontrado una manera de agregar la imagen como recurso de la aplicación. Usted necesita para poner la imagen dentro del directorio src o la dir de la clase donde llamar y, a continuación, puede utilizar el código siguiente:

    Image image = Image.getInstance(yourClassName.class.getResource("/yourImageName")));

    Si poner la imagen dentro de una carpeta, entonces, obviamente, usted tendrá que agregar la ruta de acceso a través del nombre de carpetas («nombre de carpeta/yourImageName»). Espero que ayude!

    OriginalEl autor Miguel Corti

  5. 0

    De Kotlin, si la imagen está en la resources carpeta, también se puede tratar el siguiente:

    Image.getInstance(this::class.java.classLoader.getResourceAsStream("images/your_image.png").readBytes())

    La imagen de la op fue no en los recursos.

    OriginalEl autor Rosmi

Dejar respuesta

Please enter your comment!
Please enter your name here