Получение DPI PDPage / PDDocument для точного расчета размеров PDF - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу получить точный размер каждой страницы в PDF как часть модульного теста PDF, который я буду создавать. Поскольку я имею дело с PDF-файлами, которые имеют много разных размеров страниц в каждом документе, код возвращает ArrayList измерений.

AFAIK каждая страница также может иметь собственную настройку DPI.

Я немного погуглил, но только придумал, что дает мне только часть ответа, так как мне все еще нужно выяснить, какой DPI у каждой страницы.

PDFBox - найти размеры страницы

public static ArrayList<float[]> getDimentions(PDDocument document) {
    ArrayList<float[]> dimensions = new ArrayList<>();
    float[] dim = new float[2];
    //Loop Round Each Page
    //Get Dimensions of each page and DPI
    for (int i = 0; i < document.getNumberOfPages(); i++) {
        PDPage currentPage = document.getPage(i);
        PDRectangle mediaBox = currentPage.getMediaBox();
        float height = mediaBox.getHeight();
        float width = mediaBox.getWidth();
        // How do I get the DPI now????
    }
    //Calculate Size of Page in mm  (
    //Get Dimensions of each page and DPI ( https://stackoverflow.com/questions/20904191/pdfbox-find-page-dimensions/20905166  )
    //Add size of page to list of page sizes
    //Return list of page sizes.
    return dimensions;
}

1 Ответ

2 голосов
/ 16 апреля 2019

Размеры страницы (поле носителя / поле обрезки) даны в единицах пользовательского пространства по умолчанию , что в свою очередь по умолчанию равно 1/72 дюйма.Поэтому просто разделите ширину или высоту блока на 72, чтобы получить ширину или высоту страницы в дюймах.

Однако это не соответствует значению DPI 72, поскольку это будет разрешение * 1006.* значение и pdf не имеют разрешения, единицы измерения пространства пользователя по умолчанию - это просто единица измерения .

...