iText image en java servlet
Je suis en train de faire la lettre génération avec iText (pdf/rtf) en java servlet et eu un problème avec accès aux images. Les images sont dans le WebContent/dossier images. Quand je le lance dans un serveur local et pointant vers le chemin d'accès complet du répertoire images (c://eclipse/myproject/WebContent/images/letterHead.jpg) de travail, mais il échoue en cours d'exécution sur le serveur avec le répertoire ("WebContent/images/letterHead.jpg").
Le projet est déployé comme une GUERRE sur un serveur tomcat, et de se retrouver avec une adresse semblable à
http://someserver:8081/projectName/someJSP.jsp
Je ne comprends pas comment référencer les images relativement dans cet environnement, et toute aide serait grandement appréciée.
Voici mon code
Image imghead = Image.getInstance("WebContent/images/letterHead.jpg");
imghead.setAbsolutePosition(35,770);
imghead.scaleAbsolute(125, 42);
document.add(imghead);
OriginalL'auteur Jon | 2010-03-05
Vous devez vous connecter pour publier un commentaire.
Vous ne devez jamais utiliser des chemins relatifs dans
java.io
choses. Vous serez dépendant sur le répertoire de travail actuel qui n'est pas contrôlable dans le cas d'une webapplication. Toujours utiliser absolue système de fichier du disque chemins. Ainsi,c:/full/path/to/file.ext
.Vous pouvez utiliser
ServletContext#getRealPath()
pour convertir un parent web chemin d'accès absolu du fichier de disque système de chemin. La relative chemin web est ancrée sur le public webcontent dossier qui est dans votre cas ainsi/WebContent
. Donc, vous avez besoin pour remplacer la première ligne de code ci-dessus par:OriginalL'auteur BalusC
Morceau de code suivant peut vous aider à...
OriginalL'auteur Balaji Vinnakota
Code suivant peut être utilisé pour accéder aux chemin de l'image à l'intérieur d'une classe java.
OriginalL'auteur Sana
Donc j'ai eu le même problème, j'ai voulu ajouter une image dans le pdf, mais par le biais d'un chemin d'accès relatif, donc quand j'ai fait un programme exécutable, il serait de travailler dans n'importe quel ordinateur, même s'il avait ou non l'image enregistrée.
J'ai trouvé une façon où vous ajoutez l'image en tant que ressource de votre application. Vous avez besoin de mettre l'image dans le répertoire src ou le dir de la classe où vous l'appelez et vous pouvez alors utiliser le code suivant:
Si vous mettez l'image à l'intérieur d'un dossier, puis, évidemment, vous aurez besoin d'ajouter le chemin à travers le nom des dossiers ("nomdossier/yourImageName"). Espérons que cela aide!
OriginalL'auteur Miguel Corti
Pour Kotlin, si l'image est dans le
resources
dossier, vous pouvez également essayer les suivantes:Image.getInstance(this::class.java.classLoader.getResourceAsStream("images/your_image.png").readBytes())
OriginalL'auteur Rosmi
Ressources
OriginalL'auteur Josue Villalpando