0

Word文書から取得した画像をブラウザに表示する必要があります。Apache POI を使用して画像を抽出していますが、ブラウザで開くことができません。以下のコードを使用して画像を保存しています。

 picTable = doc.getPicturesTable();
 List pictures = picTable.getAllPictures();
 if(pictures){
      println("pictures::"+pictures.size())
      Picture pic = (Picture)pictures.get(0);
      file = new File("test.gif")
      FileOutputStream out = new FileOutputStream(file)
      out.write(pic.getContent())
      out.close()
 }

以下のインターフェースメソッドを見てきました:

POI api では、`PicturesManager インターフェイス メソッド savePicture..which

イメージを保存します (おそらくディスク上)。出力形式が異なればサポートされるファイルの種類も異なるため、画像の変換が必要になる場合があることに注意してください。たとえば、HTML ブラウザーは通常、PictureType.GIF、PictureType.JPEG、PictureType.PNG、PictureType.TIFF をサポートしますが、PictureType.EMF または PictureType.WMF をサポートすることはほとんどありません。FO (Apache FOP) は、少なくとも PNG および SVG タイプをサポートします。

ブラウザにこの画像を表示するために、これまたは任意のアイデアを実装した人はいます。どうもありがとうございました。

4

1 に答える 1

0

私はxlsドキュメント、私のコードの例を持っています:

HSSFPatriarch patriarch = sheet.getDrawingPatriarch();
if (patriarch != null) {
// Loop through the objects
for (HSSFShape shape : patriarch.getChildren()) {
    if (shape instanceof HSSFPicture) {
        HSSFPicture picture = (HSSFPicture) shape;
        if (picture.getShapeType() == HSSFSimpleShape.OBJECT_TYPE_PICTURE) {
            if (picture.getImageDimension() != null) {

                    HSSFPictureData pictureData = picture.getPictureData();
                    byte[] data = pictureData.getData();
                    String fileName = PATH + picture.getFileName() + "." + pictureData.suggestFileExtension();
                    File file = new File(fileName);
                    try (FileOutputStream fop = new FileOutputStream(file)) {

                        if (!file.exists()) {
                            file.createNewFile();
                        }

                        fop.write(data);
                        fop.flush();
                        fop.close();

                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
            }
        }
    }
}

}

この例では、PATH は、win の場合は 'c:/temp/img/'、nix の場合は '/www/images/' のように、サーバー上のフォルダーへの変数です。

必要に応じて、pictureData.suggestFileExtension() をチェックして、「png」、「jpg」などに等しくすることができます。

このようなコードを実行した後、html ページで fileName を直接使用できます。または、プロキシを使用している場合は、保存された画像のリンクを取得するために追加のアクションを実行する必要がある場合があります。

于 2014-02-20T02:43:33.337 に答える