我被困在一个地方,我需要立即帮助,以下是我的问题。
实际上我正在使用Apache POI(XWPF)读取word(.docx)文档,我能够成功读取表数据,除了图像也在表格的单元格内。由于我是这个Api的新手,但根据我的理解,我认为我们也可以从单元格中读取图像字节数据。
POIXMLDocumentPart pictureData=(POIXMLDocumentPart)imageCell.getPart();
PackageRelationship packageRelationship=pictureData.getPackageRelationship();
System.out.println("Source URI:"+packageRelationship.getSourceURI());
System.out.println("Target URI:"+packageRelationship.getTargetURI());
在上面的代码中,我可以将Image URI作为Target,但我不知道如何获取Image的二进制数据。
任何想法的朋友......
谢谢, -Javed
答案 0 :(得分:2)
首先,从表格单元格get the list of paragraphs。接下来,从paragraph获取list of Runs。最后,从跑步开始,get the list of pictures embedded in the run,你就在那里。
Apache Tika中的.docx文本提取器显示了如何执行所有操作,有关详细信息,请参阅the source code of it。一般来说,它就像是
for (XWPFParagraph p : cell.getParagraphs()) {
for (XWPFRun run : p.getRuns()) {
for (XWPFPicture pic : run.getEmbeddedPictures()) {
byte[] pictureData = pic.getPictureData().getData();
}
}
}
还有一种不那么常见的将图片嵌入.docx文件的方式,这种方式更加繁琐。在XWPFDocument上,您可以使用getAllPictures()和getAllPackagePictures()来跟踪其他内容,但这不会告诉您图片所属文件的位置。