0

私は1つの場所で立ち往生していて、すぐに助けが必要です。次のことが私の問題です。

実際、私は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を取得できますが、Imageのバイナリデータを取得する方法がわかりません。

アイデアの友達...

ありがとう、-Javed

4

1 に答える 1

2

まず、テーブルセルから、段落のリストを取得します。次に、段落から、実行のリストを取得します。最後に、実行から、実行に埋め込まれた画像のリストを取得します。これで、大部分がそこにあります。

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 に答える