我正在使用 Apache Poi 从 docx 读取图像。
这是我的代码:
enter code here
public Image ReadImg(int imageid) throws IOException {
XWPFDocument doc = new XWPFDocument(new FileInputStream("import.docx"));
BufferedImage jpg = null;
List<XWPFPictureData> pic = doc.getAllPictures();
XWPFPictureData pict = pic.get(imageid);
String extract = pict.suggestFileExtension();
byte[] data = pict.getData();
//try to read image data using javax.imageio.* (JDK 1.4+)
jpg = ImageIO.read(new ByteArrayInputStream(data));
return jpg;
}
它可以正确读取图像,但不按顺序读取。
例如,如果文档包含
图像1.jpeg 图像2.jpeg 图像3.jpeg 图像4.jpeg 图片5.jpeg
上面写着
图片4 图3 图片1 图5 图片2
能帮我解决一下吗?
我想按顺序阅读图像。
谢谢, 西提克
最佳答案
public static void extractImages(XWPFDocument docx) {
try {
List<XWPFPictureData> piclist = docx.getAllPictures();
// traverse through the list and write each image to a file
Iterator<XWPFPictureData> iterator = piclist.iterator();
int i = 0;
while (iterator.hasNext()) {
XWPFPictureData pic = iterator.next();
byte[] bytepic = pic.getData();
BufferedImage imag = ImageIO.read(new ByteArrayInputStream(bytepic));
ImageIO.write(imag, "jpg", new File("D:/imagefromword/" + pic.getFileName()));
i++;
}
} catch (Exception e) {
System.exit(-1);
}
}
关于java - 使用 Apache POI 从文档中获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897387/