Есть ли способ узнать размер изображения (в байтах, в любом формате сжатого изображения, в котором они хранятся) в PDImageXObject, не извлекая его в BufferedImage?
Вызовите img.getCOSObject().getLength(), это даст вам длину COSStream, на которой основано изображение. Если у изображения есть маска, вам придется сделать то же самое с ней. Позвоните img.getMask(), чтобы проверить, есть ли один.
img.getCOSObject().getLength()
img.getMask()