DPI изображения, извлеченного из PDF с помощью pdfBox - PullRequest
2 голосов
/ 29 марта 2011

Я использую библиотеку java pdfBox для проверки одностраничных pdf-файлов со встроенными изображениями.

Я знаю, что сам pdf-файл не содержит информацию о DPI.

Однако изображения, которыеимеют одинаковые размеры в документе, имеют различные размеры в пикселях после извлечения и не имеют метаинформации dpi.

Таким образом, возможно ли каким-либо образом рассчитать размеры изображения относительно страницы pdf или извлечь изображения с их информацией dpi (дляфайлы изображений png или jpeg) с использованием pdfBox?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 07 сентября 2012

Получите файл PrintImageLocations.java из загрузки PDFBOX src. Вот исключение источника, только последняя строка от меня, и она выведет dpi:

            float imageXScale = ctmNew.getXScale();
            float imageYScale = ctmNew.getYScale();
            System.out.println("position = " + ctmNew.getXPosition() + ", " + ctmNew.getYPosition());
            // size in pixel
            System.out.println("size = " + imageWidth + "px, " + imageHeight + "px");
            // size in page units
            System.out.println("size = " + imageXScale + "pu, " + imageYScale + "pu");
            // size in inches 
            imageXScale /= 72;
            imageYScale /= 72;
            System.out.println("size = " + imageXScale + "in, " + imageYScale + "in");
            // size in millimeter
            imageXScale *= 25.4;
            imageYScale *= 25.4;
            System.out.println("size = " + imageXScale + "mm, " + imageYScale + "mm");

            System.out.printf("dpi  = %.0f dpi (X), %.0f dpi (Y) %n", image.getWidth() * 72 / ctmNew.getXScale(), image.getHeight() * 72 / ctmNew.getYScale());

А вот пример вывода:

Найдено изображение [X0]

позиция = 0,0, 0,0

размер = 2544 пикселя, 3523 пикселя <---- пикселей </p>

размер = 610,56pu, 845,52pu <---- "единицы измерения страницы", 1pu = 1/72 дюйма </p>

размер = 8,48 дюйма, 11,743334 дюйма

размер = 215,39198 мм, 298,28067 мм

точек на дюйм = 300 точек на дюйм (X), 300 точек на дюйм (Y)

0 голосов
/ 01 апреля 2011

Я не знаком с pdfBox, но у вас есть CTM, связанный с каждым растровым изображением в pdf.CTM дает одну информацию о положении и размерах изображения на странице.Таким образом и данных из извлеченных изображений должно быть достаточно для расчета относительного dpi.

...