0

我被困在一个地方,我需要立即帮助,以下是我的问题。

实际上我正在使用 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 的二进制数据。

任何想法的朋友...

谢谢,-贾维德

4

1 回答 1

2

首先,从表格单元格中,获取段落列表。接下来,从段落中,获取Runs 列表。最后,从 run 中,获取 run 中嵌入的图片列表,你基本上就在那里了。

Apache Tika 中的 .docx 文本提取器展示了如何执行所有这些操作,请参阅它的源代码了解详细信息。不过,一般来说,它就像

for (XWPFParagraph p : cell.getParagraphs()) {
  for (XWPFRun run : p.getRuns()) {
    for (XWPFPicture pic : run.getEmbeddedPictures()) {
       byte[] pictureData = pic.getPictureData().getData();
    }
  }
}

.

还有一种不太常见的将图片嵌入到 .docx 文件中的方法,这种方法使用起来更加繁琐。在 XWPFDocument 上,您可以使用getAllPictures()getAllPackagePictures()来追踪其他人,但这不会告诉您图片属于文件的哪个位置。

于 2012-04-12T10:15:54.357 回答