Apache POI: Word получить размеры изображения

1

Я пытаюсь определить фактический размер встроенных изображений в документах MS Word, используя

        HWPFDocument docB = new HWPFDocument(fileInputStream);
        PicturesTable picB = docB.getPicturesTable();
        List picturesB = picB.getAllPictures();
        for (Object o : picturesB) {
            Picture pic = (Picture) o;
            int height = pic.getHeight();
            int width = pic.getWidht();
        }

Это отлично работает для некоторых изображений, но для других getHeight() и getWidth() возвращают только -1, как указано в документации. Так есть ли другой способ получить фактический размер этих изображений в документе?

  • 0
    Как насчет их копирования и сохранения на диск, чтобы манипулировать ими другим способом? Я бы беспокоился, что это векторная графика без определяемых размеров.
  • 0
    хорошо, если я сохраню их как изображения, я больше не смогу сказать, какого размера они были в Word. Даже векторная графика будет иметь некоторый размер в документе Word.
Показать ещё 5 комментариев
Теги:
doc
apache-poi

1 ответ

0

Вместо getHeight() и getWidth() вы можете прибегнуть к getDxaGoal(), соответственно. getDyaGoal(). Они представляют собой исходный размер изображения до масштабирования/обрезки в twips.

Затем вы можете умножить это с помощью getVerticalScalingFactor()/1000.0 соответственно. getHorizontalScalingFactor()/1000.0 чтобы получить окончательный (визуализированный) размер. Подразделение на 1000,0 необходимо, поскольку эти коэффициенты масштабирования даны на миллион.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню