Аннотации водяного знака с использованием Python

В этой статье показано, как работать с аннотациями водяных знаков в PDF‑документах с использованием Aspose.PDF for Python via .NET.

Пример скрипта демонстрирует три процесса:

  • добавить аннотацию водяного знака
  • получить прямоугольники аннотаций водяного знака
  • удалить аннотации водяных знаков

Добавление аннотацию водяного знака

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

Открытие PDF и получить целевую страницу

document = ap.Document(infile)
page = document.pages[1]

Создание аннотацию водяного знака

Определите прямоугольник аннотации и добавьте его в коллекцию аннотаций страницы.

watermark_annotation = ap.annotations.WatermarkAnnotation(
    page,
    ap.Rectangle(100, 100, 400, 200, True),
)

page.annotations.append(watermark_annotation)

Настройка внешнего вида текста

Создать TextState объект для управления цветом текста, размером шрифта и семейством шрифтов.

text_state = ap.text.TextState()
text_state.foreground_color = ap.Color.blue
text_state.font_size = 25
text_state.font = ap.text.FontRepository.find_font("Arial")

Установка непрозрачность и текст водяного знака

Пример использует 50% непрозрачности и записывает три строки текста в аннотацию водяного знака.

watermark_annotation.opacity = 0.5
watermark_annotation.set_text_and_state(["HELLO", "Line 1", "Line 2"], text_state)

Сохранение PDF

document.save(outfile)

Полный пример

def watermark_add(infile, outfile):
    document = ap.Document(infile)
    page = document.pages[1]

    watermark_annotation = ap.annotations.WatermarkAnnotation(
        page,
        ap.Rectangle(100, 100, 400, 200, True),
    )

    page.annotations.append(watermark_annotation)

    text_state = ap.text.TextState()
    text_state.foreground_color = ap.Color.blue
    text_state.font_size = 25
    text_state.font = ap.text.FontRepository.find_font("Arial")

    watermark_annotation.opacity = 0.5
    watermark_annotation.set_text_and_state(["HELLO", "Line 1", "Line 2"], text_state)

    document.save(outfile)

Получение аннотацию водяного знака

Чтобы просмотреть существующие аннотации водяных знаков, отфильтруйте аннотации первой страницы по WATERMARK введите тип и распечатайте их прямоугольники.

Загрузить документ и собрать аннотации водяных знаков

document = ap.Document(infile)
watermark_annotations = [
    a
    for a in document.pages[1].annotations
    if a.annotation_type == ap.annotations.AnnotationType.WATERMARK
]

Вывести прямоугольники аннотаций

for watermark_annotation in watermark_annotations:
    print(watermark_annotation.rect)

Полный пример

def watermark_get(infile, outfile):
    document = ap.Document(infile)
    watermark_annotations = [
        a
        for a in document.pages[1].annotations
        if a.annotation_type == ap.annotations.AnnotationType.WATERMARK
    ]

    for watermark_annotation in watermark_annotations:
        print(watermark_annotation.rect)

Удаление аннотацию водяного знака

Этот рабочий процесс удаляет все аннотации водяных знаков с первой страницы и сохраняет обновлённый PDF.

Найти аннотации водяных знаков для удаления

document = ap.Document(infile)
watermark_annotations = [
    a
    for a in document.pages[1].annotations
    if a.annotation_type == ap.annotations.AnnotationType.WATERMARK
]

Удаление аннотации и сохранить PDF

for watermark_annotation in watermark_annotations:
    document.pages[1].annotations.delete(watermark_annotation)

document.save(outfile)

Полный пример

def watermark_delete(infile, outfile):
    document = ap.Document(infile)
    watermark_annotations = [
        a
        for a in document.pages[1].annotations
        if a.annotation_type == ap.annotations.AnnotationType.WATERMARK
    ]

    for watermark_annotation in watermark_annotations:
        document.pages[1].annotations.delete(watermark_annotation)

    document.save(outfile)

Связанные темы