Форматирование PDF-документов на Java

Форматирование в Aspose.PDF for Java включает поведение просмотрщика, встраивание шрифтов и настройки отображения.

Получение настроек окна документа

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

  1. Откройте исходный PDF в объекте Document.
  2. Прочитайте необходимые свойства окна и отображения из документа.
  3. Выведите текущие настройки для проверки или отладки.
public static void getDocumentWindow(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        System.out.println("CenterWindow: " + document.isCenterWindow());
        System.out.println("Direction: " + document.getDirection());
        System.out.println("DisplayDocTitle: " + document.isDisplayDocTitle());
        System.out.println("FitWindow: " + document.isFitWindow());
        System.out.println("HideMenuBar: " + document.isHideMenubar());
        System.out.println("HideToolBar: " + document.isHideToolBar());
        System.out.println("HideWindowUI: " + document.isHideWindowUI());
        System.out.println("NonFullScreenPageMode: " + document.getNonFullScreenPageMode());
        System.out.println("PageLayout: " + document.getPageLayout());
        System.out.println("PageMode: " + document.getPageMode());
    }
}

Установка предпочтений окна документа

Этот пример обновляет способ отображения PDF при открытии в совместимом просмотрщике.

  1. Откройте исходный PDF в объекте Document.
  2. Установите требуемые параметры окна, макета и режима страницы.
  3. Сохраните обновленный PDF Document.
public static void setDocumentWindow(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.setCenterWindow(true);
        document.setDirection(Direction.R2L);
        document.setDisplayDocTitle(true);
        document.setFitWindow(true);
        document.setHideMenubar(true);
        document.setHideToolBar(true);
        document.setHideWindowUI(true);
        document.setNonFullScreenPageMode(PageMode.UseOC);
        document.setPageLayout(PageLayout.TwoColumnLeft);
        document.setPageMode(PageMode.UseThumbs);
        document.save(outputFile.toString());
    }
}

Встраивание шрифтов в существующий PDF

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

  1. Откройте исходный PDF в объекте Document.
  2. Включите стандартное встраивание шрифтов и переберите шрифты, используемые на каждой странице Page.
  3. Отметьте все невстроенные объекты Font для встраивания.
  4. Сохраните обновленный документ.
public static void embeddedFonts(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.setEmbedStandardFonts(true);
        for (Page page : document.getPages()) {
            for (Font pageFont : page.getResources().getFonts()) {
                if (!pageFont.isEmbedded()) {
                    pageFont.setEmbedded(true);
                }
            }
        }
        document.save(outputFile.toString());
    }
}

Встраивание шрифтов при создании нового PDF

Этот пример создает новый PDF и сразу назначает встроенный шрифт для текстового содержимого.

  1. Создайте новый PDF Document и добавьте Page.
  2. Создайте необходимые объекты TextFragment, TextSegment и TextState.
  3. Получите нужный шрифт Font из репозитория и пометьте его как встроенный.
  4. Добавьте текстовое содержимое на страницу и сохраните выходной документ.
public static void embeddedFontsInNewDocument(Path outputFile) {
    try (Document document = new Document()) {
        try (Page page = document.getPages().add()) {
            TextFragment fragment = new TextFragment("");
            TextSegment segment = new TextSegment(" This is a sample text using Custom font.");
            TextState textState = new TextState();
            Font font = FontRepository.findFont("Arial");
            font.setEmbedded(true);
            textState.setFont(font);
            segment.setTextState(textState);
            fragment.getSegments().add(segment);
            page.getParagraphs().add(fragment);
        }
        document.save(outputFile.toString());
    }
}

Установка шрифта по умолчанию для вывода PDF

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

  1. Откройте исходный PDF в объекте Document.
  2. Создайте PdfSaveOptions и установите имя шрифта по умолчанию.
  3. Сохраните документ с настроенными параметрами сохранения.
public static void setDefaultFont(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        PdfSaveOptions saveOptions = new PdfSaveOptions();
        saveOptions.setDefaultFontName("Arial");
        document.save(outputFile.toString(), saveOptions);
    }
}

Получение всех шрифтов, используемых в PDF

В этом примере перечисляются все шрифты, обнаруженные в документе, чтобы вы могли проверить их использование перед экспортом или обновлением файла.

  1. Откройте исходный PDF в объекте Document.
  2. Перечислите шрифты, возвращаемые утилитами шрифтов документа.
  3. Выведите имя каждого обнаруженного Font.
public static void getAllFonts(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (Font font : document.getFontUtilities().getAllFonts()) {
            System.out.println(font.getFontName());
        }
    }
}

Улучшение встраивания шрифтов с помощью подмножеств

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

  1. Откройте исходный PDF в объекте Document.
  2. Создайте подмножества шрифтов с помощью утилит шрифтов документа, указав требуемые значения FontSubsetStrategy.
  3. Сохраните оптимизированный документ.
public static void improveFontsEmbedding(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetAllFonts);
        document.getFontUtilities().subsetFonts(FontSubsetStrategy.SubsetEmbeddedFontsOnly);
        document.save(outputFile.toString());
    }
}

Установка коэффициента масштабирования при открытии документа

В этом примере настраивается начальный уровень масштабирования, который должен применяться при открытии PDF.

  1. Откройте исходный PDF в объекте Document.
  2. Создайте GoToAction с XYZExplicitDestination.
  3. Назначьте действие как действие открытия документа и сохраните результат.
public static void setZoomFactor(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        GoToAction action = new GoToAction(new XYZExplicitDestination(1, 0.0, 0.0, 0.5));
        document.setOpenAction(action);
        document.save(outputFile.toString());
    }
}

Получение коэффициента масштабирования при открытии документа

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

  1. Откройте исходный PDF в объекте Document.
  2. Проверьте, является ли действие открытия GoToAction с XYZExplicitDestination.
  3. Выведите настроенное значение масштабирования или сообщите, что масштаб не установлен.
public static void getZoomFactor(Path inputFile) {
    try (Document document = new Document(inputFile.toString())) {
        if (document.getOpenAction() instanceof GoToAction action
                && action.getDestination() instanceof XYZExplicitDestination destination) {
            System.out.println("Zoom: " + destination.getZoom());
        } else {
            System.out.println("Zoom: not set");
        }
    }
}