java servlet中的iText图像

Jon*_*on 4 jsp servlets image itext

我在java servlet中使用iText(pdf/rtf)进行字母生成,并且在访问图像时遇到了问题.图像位于WebContent/images文件夹中.当我在本地服务器上运行它并指向images目录的完整路径(c://eclipse/myproject/WebContent/images/letterHead.jpg)时,它的工作正常,但它无法在带有目录的服务器上运行("WebContent /"图像/ letterHead.jpg").

该项目正在tomcat服务器上部署为WAR,因此最终得到类似的地址

http://someserver:8081/projectName/someJSP.jsp
Run Code Online (Sandbox Code Playgroud)

我不明白如何在这种环境中相对引用图像,任何帮助将不胜感激.

这是我的代码

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

Bal*_*usC 13

你永远不应该在java.io东西中使用相对路径.您将依赖于当前工作目录,在Web应用程序的情况下,该目录无法控制.始终使用绝对磁盘文件系统路径.因此,c:/full/path/to/file.ext.

您可以使用ServletContext#getRealPath()将相对Web路径转换为绝对磁盘文件系统路径.相对Web路径根植于公共webcontent文件夹,因此在您的情况下/WebContent.因此,您需要将以上代码的第一行替换为:

String relativeWebPath = "/images/letterHead.jpg";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
Image imghead = Image.getInstance(absoluteDiskPath);
// ...
Run Code Online (Sandbox Code Playgroud)