Форматирование PDF-документов на Java
Форматирование в Aspose.PDF for Java включает поведение просмотрщика, встраивание шрифтов и настройки отображения.
Получение настроек окна документа
Используйте этот пример, чтобы просмотреть текущие настройки просмотра, сохранённые в существующем PDF‑документе.
- Откройте исходный PDF в объекте Document.
- Прочитайте необходимые свойства окна и отображения из документа.
- Выведите текущие настройки для проверки или отладки.
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 при открытии в совместимом просмотрщике.
- Откройте исходный PDF в объекте Document.
- Установите требуемые параметры окна, макета и режима страницы.
- Сохраните обновленный 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
Используйте этот подход, когда документ должен включать необходимые шрифты для более надёжного отображения на других системах.
- Откройте исходный PDF в объекте Document.
- Включите стандартное встраивание шрифтов и переберите шрифты, используемые на каждой странице Page.
- Отметьте все невстроенные объекты Font для встраивания.
- Сохраните обновленный документ.
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 и сразу назначает встроенный шрифт для текстового содержимого.
- Создайте новый PDF Document и добавьте Page.
- Создайте необходимые объекты TextFragment, TextSegment и TextState.
- Получите нужный шрифт Font из репозитория и пометьте его как встроенный.
- Добавьте текстовое содержимое на страницу и сохраните выходной документ.
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
Используйте этот шаблон, когда сохранённый документ должен переключаться на определённый шрифт при генерации вывода.
- Откройте исходный PDF в объекте Document.
- Создайте PdfSaveOptions и установите имя шрифта по умолчанию.
- Сохраните документ с настроенными параметрами сохранения.
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
В этом примере перечисляются все шрифты, обнаруженные в документе, чтобы вы могли проверить их использование перед экспортом или обновлением файла.
- Откройте исходный PDF в объекте Document.
- Перечислите шрифты, возвращаемые утилитами шрифтов документа.
- Выведите имя каждого обнаруженного 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());
}
}
}
Улучшение встраивания шрифтов с помощью подмножеств
Используйте этот подход, когда хотите снизить нагрузку шрифта, сохраняя встроенные данные шрифта согласованными с использованием документа.
- Откройте исходный PDF в объекте Document.
- Создайте подмножества шрифтов с помощью утилит шрифтов документа, указав требуемые значения FontSubsetStrategy.
- Сохраните оптимизированный документ.
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.
- Откройте исходный PDF в объекте Document.
- Создайте GoToAction с XYZExplicitDestination.
- Назначьте действие как действие открытия документа и сохраните результат.
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 уже явный уровень масштабирования для своего действия открытия.
- Откройте исходный PDF в объекте Document.
- Проверьте, является ли действие открытия GoToAction с XYZExplicitDestination.
- Выведите настроенное значение масштабирования или сообщите, что масштаб не установлен.
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");
}
}
}