Форматирование PDF документа с использованием Python
Форматирование PDF-документа
Получение свойств окна документа и отображения страниц
Эта тема поможет вам понять, как получить свойства окна документа, приложения просмотра и как отображаются страницы. Чтобы установить эти свойства:
Откройте PDF-файл, используя класс Document. Теперь вы можете установить свойства объекта Document, такие как
- CenterWindow – Центрировать окно документа на экране. По умолчанию: false.
- Direction – Порядок чтения. Это определяет, как страницы располагаются при отображении бок о бок. По умолчанию: слева направо.
- DisplayDocTitle – Отображать заголовок документа в строке заголовка окна документа. По умолчанию: false (заголовок отображается).
- HideMenuBar – Скрыть или отобразить строку меню окна документа. По умолчанию: false (строка меню отображается).
- HideToolBar – Скрыть или отобразить панель инструментов окна документа. По умолчанию: false (панель инструментов отображается).
- HideWindowUI – Скрыть или отобразить элементы окна документа, такие как полосы прокрутки. Default: false (элементы интерфейса отображаются).
- NonFullScreenPageMode – Как документ отображается, когда он не в полноэкранном режиме.
- PageLayout – Макет страницы.
- PageMode – Как документ отображается при первом открытии. Опции: отображать эскизы, полноэкранный режим, показывать панель вложений.
Следующий фрагмент кода показывает, как получить свойства с использованием класса Document.
import aspose.pdf as ap
# Открыть документ
document = ap.Document(input_pdf)
# Получить различные свойства документа
# Позиция окна документа - По умолчанию: false
print("CenterWindow :", document.center_window)
# Преобладающий порядок чтения; определяет позицию страницы
# При отображении рядом - По умолчанию: L2R
print("Direction :", document.direction)
# Должна ли строка заголовка окна отображать заголовок документа
# Если false, строка заголовка отображает имя файла PDF - По умолчанию: false
print("DisplayDocTitle :", document.display_doc_title)
# Должно ли изменяться размер окна документа, чтобы соответствовать размеру
# Первой отображаемой страницы - По умолчанию: false
print("FitWindow :", document.fit_window)
# Должно ли скрываться строка меню приложения просмотра - По умолчанию: false
print("HideMenuBar :", document.hide_menubar)
# Должно ли скрываться панель инструментов приложения просмотра - По умолчанию: false
print("HideToolBar :", document.hide_tool_bar)
# Должны ли скрываться элементы интерфейса, такие как полосы прокрутки
# И оставлять только содержимое страницы - По умолчанию: false
print("HideWindowUI :", document.hide_window_ui)
# Режим страницы документа. Как отображать документ при выходе из полноэкранного режима.
print("NonFullScreenPageMode :", document.non_full_screen_page_mode)
# Макет страницы, т.е. одиночная страница, одна колонка
print("PageLayout :", document.page_layout)
# Как документ должен отображаться при открытии
# Т.е. отображать эскизы, полноэкранный режим, показывать панель вложений
print("pageMode :", document.page_mode)
Установите свойства окна документа и отображения страницы
Эта тема объясняет, как установить свойства окна документа, программы просмотра и отображения страницы. Чтобы установить эти различные свойства:
- Откройте PDF-файл с помощью класса Document.
- Установите свойства объекта Document.
- Сохраните обновленный PDF-файл, используя метод save.
Доступные свойства:
- CenterWindow
- Direction
- DisplayDocTitle
- FitWindow
- HideMenuBar
- HideToolBar
- HideWindowUI
- NonFullScreenPageMode
- PageLayout
- PageMode
Каждое из них используется и описано в коде ниже. Следующий фрагмент кода показывает, как установить свойства с использованием класса Document.
import aspose.pdf as ap
# Открыть документ
document = ap.Document(input_pdf)
# Установить различные свойства документа
# Указать позиционирование окна документа - По умолчанию: false
document.center_window = True
# Преобладающий порядок чтения; определяет позицию страницы
# При отображении рядом друг с другом - По умолчанию: L2R
document.direction = ap.Direction.R2L
# Указать, должна ли строка заголовка окна отображать заголовок документа
# Если false, строка заголовка отображает имя PDF-файла - По умолчанию: false
document.display_doc_title = True
# Указать, следует ли изменить размер окна документа по размеру
# Первой отображаемой страницы - По умолчанию: false
document.fit_window = True
# Указать, следует ли скрыть строку меню программы просмотра - По умолчанию: false
document.hide_menubar = True
# Указать, следует ли скрыть панель инструментов программы просмотра - По умолчанию: false
document.hide_tool_bar = True
# Указать, следует ли скрыть элементы UI, такие как полосы прокрутки
# И оставить отображенными только содержимое страницы - По умолчанию: false
document.hide_window_ui = True
# Режим страницы документа. указать, как отображать документ при выходе из полноэкранного режима.
document.non_full_screen_page_mode = ap.PageMode.USE_OC
# Указать макет страницы, т.е. одна страница, одна колонка
document.page_layout = ap.PageLayout.TWO_COLUMN_LEFT
# Указать, как документ должен отображаться при открытии
# Т.е. показывать миниатюры, полноэкранный режим, показывать панель вложений
document.page_mode = ap.PageMode.USE_THUMBS
# Сохранить обновленный PDF-файл
document.save(output_pdf)
Встраивание стандартных шрифтов Type 1
Некоторые PDF-документы содержат шрифты из специального набора шрифтов Adobe. Шрифты из этого набора называются «Стандартные шрифты Type 1». Этот набор включает 14 шрифтов, и встраивание такого типа шрифтов требует использования специальных флагов, например embed_standard_fonts. Ниже приведен фрагмент кода, который можно использовать для получения документа со всеми встроенными шрифтами, включая стандартные шрифты Type 1:
import aspose.pdf as ap
# Загрузить существующий PDF-документ
document = ap.Document(input_pdf)
# Установить свойство EmbedStandardFonts для документа
document.embed_standard_fonts = True
for page in document.pages:
if page.resources.fonts != None:
for page_font in page.resources.fonts:
# Проверить, встроен ли шрифт
if not page_font.is_embedded:
page_font.is_embedded = True
document.save(output_pdf)
Встраивание шрифтов при создании PDF
Если вам нужно использовать любой шрифт, кроме 14 основных шрифтов, поддерживаемых Adobe Reader, вы должны встроить описание шрифта при создании файла PDF. Если информация о шрифте не встроена, Adobe Reader возьмет её из операционной системы, если она установлена в системе, или создаст заменяющий шрифт в соответствии с дескриптором шрифта в PDF.
Обратите внимание, что встроенный шрифт должен быть установлен на хост-машине, т.е. в случае следующего кода шрифт ‘Univers Condensed’ установлен в системе.
Мы используем свойство ‘is_embedded’, чтобы встроить информацию о шрифте в файл PDF. Установка значения этого свойства в ‘True’ встраивает весь файл шрифта в PDF, зная, что это увеличит размер PDF-файла. Ниже приведен фрагмент кода, который можно использовать для встраивания информации о шрифте в PDF.
import aspose.pdf as ap
# Создать объект Pdf, вызвав его пустой конструктор
doc = ap.Document()
# Создать секцию в объекте Pdf
page = doc.pages.add()
fragment = ap.text.TextFragment("")
segment = ap.text.TextSegment(" Это образец текста с использованием пользовательского шрифта.")
ts = ap.text.TextState()
ts.font = ap.text.FontRepository.find_font("Arial")
ts.font.is_embedded = True
segment.text_state = ts
fragment.segments.append(segment)
page.paragraphs.add(fragment)
# Сохранить PDF-документ
doc.save(output_pdf)
Установить имя шрифта по умолчанию при сохранении PDF
Когда PDF-документ содержит шрифты, которые недоступны в самом документе и на устройстве, API заменяет эти шрифты на шрифт по умолчанию. Если шрифт доступен (установлен на устройстве или встроен в документ), итоговый PDF должен иметь тот же шрифт (не должен быть заменен на шрифт по умолчанию). Значение шрифта по умолчанию должно содержать имя шрифта (не путь к файлам шрифта). Мы реализовали функцию установки имени шрифта по умолчанию при сохранении документа как PDF. Следующий фрагмент кода можно использовать для установки шрифта по умолчанию:
import aspose.pdf as ap
# Загрузить существующий PDF-документ с отсутствующим шрифтом
document = ap.Document(input_pdf)
pdfSaveOptions = ap.PdfSaveOptions()
# Указать имя шрифта по умолчанию
newName = "Arial"
pdfSaveOptions.default_font_name = newName
document.save(output_pdf, pdfSaveOptions)
Получить все шрифты из PDF-документа
Если вы хотите получить все шрифты из PDF-документа, вы можете использовать метод font_utilities, предоставленный в классе Document. Пожалуйста, проверьте следующий фрагмент кода, чтобы получить все шрифты из существующего PDF документа:
import aspose.pdf as ap
doc = ap.Document(input_pdf)
fonts = doc.font_utilities.get_all_fonts()
for font in fonts:
print(font.font_name)
Улучшение встраивания шрифтов с использованием FontSubsetStrategy
Следующий фрагмент кода показывает, как установить FontSubsetStrategy использованную в свойстве font_utilities:
import aspose.pdf as ap
doc = ap.Document(input_pdf)
# Все шрифты будут встроены как подмножество в документ в случае SubsetAllFonts.
doc.font_utilities.subset_fonts(ap.FontSubsetStrategy.SUBSET_ALL_FONTS)
# Подмножество шрифта будет встроено для полностью встроенных шрифтов, но шрифты, которые не встроены в документ, не будут затронуты.
doc.font_utilities.subset_fonts(ap.FontSubsetStrategy.SUBSET_EMBEDDED_FONTS_ONLY)
doc.save(output_pdf)
Установка и получение коэффициента масштабирования PDF-файла
Иногда необходимо определить текущий коэффициент масштабирования PDF-документа. С помощью Aspose.Pdf вы можете узнать текущее значение, а также установить его.
Свойство Destination класса GoToAction позволяет получить значение масштабирования, связанное с PDF-файлом. Аналогично, его можно использовать для установки коэффициента масштабирования файла.
Установка коэффициента масштабирования
Следующий фрагмент кода показывает, как установить коэффициент масштабирования PDF-файла.
import aspose.pdf as ap
# Создать новый объект Document
doc = ap.Document(input_pdf)
action = ap.annotations.GoToAction(ap.annotations.XYZExplicitDestination(1, 0.0, 0.0, 0.5))
doc.open_action = action
# Сохранить документ
doc.save(output_pdf)
Получение коэффициента масштабирования
Следующий фрагмент кода показывает, как получить коэффициент масштабирования PDF-файла.
import aspose.pdf as ap
# Создать новый объект Document
doc = ap.Document(input_pdf)
# Создать объект GoToAction
action = doc.open_action
# Получить коэффициент масштабирования PDF-файла
print(action.destination.zoom)
Установка свойств предварительной настройки диалогового окна печати
Aspose.PDF позволяет установить DUPLEX_FLIP_LONG_EDGE для членов PDF-документа. Это позволяет изменить свойство DuplexMode для PDF-документа, которое по умолчанию установлено на simplex. Это можно сделать, используя две разные методологии, как показано ниже.
import aspose.pdf as ap
doc = ap.Document()
doc.pages.add()
doc.duplex = ap.PrintDuplex.DUPLEX_FLIP_LONG_EDGE
doc.save(output_pdf)
Установка свойств предварительной настройки диалогового окна печати с использованием редактора содержимого PDF
import aspose.pdf as ap
ed = ap.facades.PdfContentEditor()
ed.bind_pdf(input_pdf)
if (ed.get_viewer_preference() & ap.facades.ViewerPreference.DUPLEX_FLIP_SHORT_EDGE) > 0:
print("Файл имеет двустороннюю печать с коротким переворотом")
ed.change_viewer_preference(ap.facades.ViewerPreference.DUPLEX_FLIP_SHORT_EDGE)
ed.save(output_pdf)