Anotaciones de marca de agua usando Python

Este artículo muestra cómo trabajar con anotaciones de marca de agua en documentos PDF usando Aspose.PDF for Python via .NET.

El script de ejemplo muestra tres flujos de trabajo comunes:

  • agregar una anotación de marca de agua
  • obtener rectángulos de anotación de marca de agua
  • eliminar anotaciones de marca de agua

Agregar anotación de marca de agua

Este ejemplo agrega una anotación de marca de agua a la primera página de un documento PDF. La marca de agua usa un estado de texto para controlar la configuración de la fuente y aplica una opacidad personalizada para lograr una apariencia semitransparente.

Abra el PDF y obtenga la página objetivo

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

Crear la anotación de marca de agua

Define el rectángulo de anotación y añádelo a la colección de anotaciones de la página.

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

page.annotations.append(watermark_annotation)

Configurar la apariencia del texto

Crear un TextState objeto para controlar el color del texto, el tamaño de fuente y la familia de fuentes.

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")

Establecer opacidad y texto de marca de agua

El ejemplo utiliza una opacidad del 50% y escribe tres líneas de texto en la anotación de marca de agua.

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

Guardar el PDF

document.save(outfile)

Ejemplo completo

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)

Obtener anotación de marca de agua

Para inspeccionar las anotaciones de marca de agua existentes, filtre las anotaciones de la primera página por la WATERMARK escriba e imprima sus rectángulos.

Cargar el documento y recopilar anotaciones de marca de agua

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

Imprimir los rectángulos de anotación

for watermark_annotation in watermark_annotations:
    print(watermark_annotation.rect)

Ejemplo completo

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)

Eliminar anotación de marca de agua

Este flujo de trabajo elimina todas las anotaciones de marca de agua de la primera página y guarda el PDF actualizado.

Buscar anotaciones de marca de agua para eliminar

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

Eliminar las anotaciones y guardar el PDF

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

document.save(outfile)

Ejemplo completo

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)

Temas relacionados