getLength()
не является хорошей мерой, поскольку возвращает закодированную длину потока. В зависимости от кодировки, используемой в файле PDF, и кодировки, которую вы используете в файловой системе, вы получите либо меньшее, либо большее значение.
- Изображение в PDF использует кодировку JPEG, вы не кодируете при сохранении изображения:
getLength()
будет намного меньше, чем размер в файловой системе. - Изображение в PDF не закодировано, вы сохраняете как изображение JPEG: ваше изображение на диске будет быть намного меньше.
Более надежный способ сделать это - посмотреть на ширину и высоту изображения, которое вы можете получить из PDImage
. Это дает вам количество пикселей по горизонтали и вертикали. PDImage
возвращает это с использованием getWidth()
и getHeight()
.
Это не совсем правильно, если вы хотите получить общий размер изображения в байтах, вам также нужно будет посмотреть на цветовое пространство, чтобы увидеть, как количество компонентов на пиксель (например, 3 для RGB, 4 для CMYK) и сколько битов на компонент в изображении. Но вы, вероятно, можете пропустить эти значения для той цели, на которую вы смотрите, и просто рассчитаться с шириной и высотой, чтобы получить приблизительное представление о том, хотите ли вы сохранить это или нет.