Получение и установка свойств страниц PDF в Java

Aspose.PDF for Java может проверять количество страниц, границы страниц, вращение и тип цвета страницы.

Получение количества страниц

Используйте этот пример, когда нужно узнать общее количество страниц в PDF.

  1. Откройте исходный PDF в объекте Document.
  2. Прочитайте размер коллекции страниц.
  3. Выведите общее количество страниц.
public static void getPageCount(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        System.out.println("Page Count: " + document.getPages().size());
    }
}

Получение количества страниц перед сохранением

Используйте этот пример, когда необходимо узнать, сколько страниц сгенерированный контент создаст до записи файла.

  1. Создайте новый PDF Document и добавьте содержимое на страницу.
  2. Обработайте абзацы, чтобы принудительно выполнить расчет разметки.
  3. Прочитайте полученное количество страниц и выведите его.
public static void getPageCountWithoutSaving(Path inputFile) {
    try (Document document = new Document()) {
        Page page = document.getPages().add();
        for (int i = 0; i < 300; i++) {
            page.getParagraphs().add(new TextFragment("Pages count test"));
        }
        document.processParagraphs();
        System.out.println("Number of pages in document = " + document.getPages().size());
    }
}

Получение свойств границ страницы

Используйте этот пример, когда необходимо проверить все основные размеры областей страницы и значения поворота страницы.

  1. Откройте исходный PDF в объекте Document и получите доступ к целевой странице.
  2. Соберите значения рамок страницы в карту.
  3. Выведите размеры и информацию о повороте страницы.
public static void getPageProperties(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        Page page = document.getPages().get_Item(1);
        Map<String, Rectangle> boxes = new LinkedHashMap<>();
        boxes.put("ArtBox", page.getArtBox());
        boxes.put("BleedBox", page.getBleedBox());
        boxes.put("CropBox", page.getCropBox());
        boxes.put("MediaBox", page.getMediaBox());
        boxes.put("TrimBox", page.getTrimBox());
        boxes.put("Rect", page.getRect());

        for (Map.Entry<String, Rectangle> entry : boxes.entrySet()) {
            Rectangle box = entry.getValue();
            System.out.println(entry.getKey() + " : Height=" + box.getHeight()
                    + ",Width=" + box.getWidth()
                    + ",LLX=" + box.getLLX()
                    + ",LLY=" + box.getLLY()
                    + ",URX=" + box.getURX()
                    + ",URY=" + box.getURY());
        }

        System.out.println("Page Number : " + page.getNumber());
        System.out.println("Rotate : " + page.getRotate());
    }
}

Получение типа цвета каждой страницы

Используйте этот пример, когда необходимо определить, являются ли страницы черно‑белыми, градациями серого или RGB.

  1. Откройте исходный PDF в объекте Document.
  2. Переберите все страницы и прочитайте значение ColorType каждой страницы.
  3. Преобразуйте значение перечисления в читаемый текст и выведите результат.
public static void getPageColorType(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (int pageNumber = 1; pageNumber <= document.getPages().size(); pageNumber++) {
            ColorType pageColorType = document.getPages().get_Item(pageNumber).getColorType();
            String colorDescription = switch (pageColorType) {
                case BlackAndWhite -> "Black and white";
                case Grayscale -> "Gray Scale";
                case Rgb -> "RGB";
                case Undefined -> "undefined";
            };
            System.out.println("Page # " + pageNumber + " is " + colorDescription + ".");
        }
    }
}