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);
これは問題なく動作します。これが私のコントローラーで機能しない理由がわかりません。