Jur*_*vić 5 java spring-mvc relative-path itext realpath
我正在尝试将图像添加到我的pdf文件中.图像位于"WebContent/img/image.png"中.首先,我保存相对路径到字符串,然后我将此相对路径转换为实际路径.
String relativeWebPath = "/img/image.png";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
Image image1 = Image.getInstance(absoluteDiskPath);
Run Code Online (Sandbox Code Playgroud)
即使这样
String absoluteDiskPath = getServletContext().getRealPath("/");
Run Code Online (Sandbox Code Playgroud)
不起作用.
我在定义相对路径时尝试了一些变化,但无法使它们中的任何一个起作用.当此行String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);尝试执行时,我总是得到nullPointerException .我是否在相对路径或其他方面做错了什么?我不知道这是否相关,但我使用的是Spring.
@RequestMapping(value = "/exportPhonebook.html", method = RequestMethod.POST)
public void exportPhonebook(Model model, HttpServletResponse response) {
try {
setResponseHeaderPDF(response);
Document document = new Document();
ByteArrayOutputStream baosPDF = new ByteArrayOutputStream();
PdfWriter pdfWriter = null;
pdfWriter = PdfWriter.getInstance(document, baosPDF);
PageNumbersEventHelper events = new PageNumbersEventHelper();
pdfWriter.setPageEvent(events);
document.open();
addMetaData(document);
addTitlePage(document);
String relativeWebPath = "/img/image.png";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
Image image1 = Image.getInstance(absoluteDiskPath);
document.add(image1);
addContent(document);
document.close();
pdfWriter.close();
OutputStream os = response.getOutputStream();
baosPDF.writeTo(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在jsp中使用它的方式:
<input type="hidden" value="<%=getServletContext().getRealPath("/") %>" name="path">
Run Code Online (Sandbox Code Playgroud)
我将它传递给控制器并添加相对路径到此路径.
path = path + "img\\image.png";
Image image = Image.getInstance(path);
Run Code Online (Sandbox Code Playgroud)
这很好用.我不明白为什么这在我的控制器中不起作用.
我错过了这个:
ServletContext servletContext = request.getSession().getServletContext();
现在它适用于控制器.
ServletContext servletContext = request.getSession().getServletContext();
String relativeWebPath = "img/image.png";
String absoluteDiskPath = servletContext.getRealPath(relativeWebPath);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37208 次 |
| 最近记录: |