在使用 Apache POI 生成 PowerPoint 文件并插入图片时,可能会遇到图片文件名不正确的问题。这通常是由于图片文件名中包含空格或特殊字符,而这些字符被自动转义,导致文件名与实际文件名不符。
为了解决这个问题,可以在插入图片之前对文件名进行编码,使其符合文件系统的要求。例如,可以使用 Java 的 URLEncoder 类对文件名进行编码,如下所示:
String encodedFileName = URLEncoder.encode("my image.png", "UTF-8");
然后,使用编码后的文件名来插入图片,如下所示:
String filePath = "path/to/my image.png";
FileInputStream inputStream = new FileInputStream(filePath);
byte[] pictureData = IOUtils.toByteArray(inputStream);
int pictureIndex = ppt.addPicture(pictureData, XSLFPictureData.PICTURE_TYPE_PNG);
XSLFPictureShape picture = slide.createPicture(pictureIndex);
picture.setAnchor(new Rectangle(100, 100, 400, 400));
这样就能够正确地插入带有空格或特殊字符的图片文件了。