Я пытаюсь вычислить процентные изображения в PDF «Занять» на каждой странице. У меня есть следующий код: < /p>
PDPageTree list = document.getPages();
int pageNumber = 0;
float imagePerPage = 0;
for (PDPage page : list) {
BufferedImage pageImage = renderer.renderImage(pageNumber, 2);
float pageWidth = pageImage.getWidth();
float pageHeight = pageImage.getHeight();
PDResources pdResources = page.getResources();
int i = 1;
for (COSName name : pdResources.getXObjectNames()) {
PDXObject object = pdResources.getXObject(name);
if (object instanceof PDImageXObject) {
PDImageXObject image = (PDImageXObject) object;
BufferedImage bufferedImage = image.getImage();
float imageWidth = bufferedImage.getWidth();
float imageHeight = bufferedImage.getHeight();
int sumr = 0;
int sumg = 0;
int sumb = 0;
for (int x = 0; x < imageWidth; x++) {
for (int y = 0; y < imageHeight; y++) {
Color pixel = new Color(bufferedImage.getRGB(x, y));
sumr += pixel.getRed();
sumg += pixel.getGreen();
sumb += pixel.getBlue();
}
}
int num = image.getWidth() * image.getHeight();
Color avg = new Color(sumr / num, sumg / num, sumb / num);
if (!new Color(0, 0, 0).equals(avg)) {
String filename = "extracted-image-" + i + ".png";
ImageIO.write(
image.getImage(),
"png",
new File(filename)
);
imagePerPage++;
}
i++;
}
}
System.out.println("Image per page ratio is: " + imagePerPage);
imagePerPage = 0;
pageNumber++;
}
< /code>
Тем не менее, BufferedImage.getWidth () и BufferedImage.getheight () возвращает фактический размер изображения в пикселях. Как я мог получить отображаемый размер для каждого изображения? Однако, в случае фактического PDF, он, по -видимому, дает неправильные ответы. (как ширина) и 16,61 (как высота) не кажутся правильными. В конце концов, каждое изображение имеет не менее трети общей ширины.
Подробнее здесь: https://stackoverflow.com/questions/694 ... ith-pdfbox