我正在尝试将图像添加到我的 pdf 文件中。图片位于“WebContent/img/image.png”中。首先,我将相对路径保存为字符串,然后将此相对路径转换为真实路径。
String relativeWebPath = "/img/image.png";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
Image image1 = Image.getInstance(absoluteDiskPath);
甚至这个
String absoluteDiskPath = getServletContext().getRealPath("/");
不起作用。
我在定义相对路径时尝试了一些变体,但无法使它们中的任何一个起作用。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();
}
}
这是我在jsp中使用它的方式:
<input type="hidden" value="<%=getServletContext().getRealPath("/") %>" name="path">
我将它传递给控制器并将相对路径添加到该路径。
path = path + "img\\image.png";
Image image = Image.getInstance(path);
这工作得很好。我不明白为什么这在我的控制器中不起作用。