Mettre à jour les liens PDF en Python

Mettre à jour la couleur du texte LinkAnnotation

Cet exemple montre comment détecter toutes les annotations de lien sur la première page d’un PDF en utilisant Aspose.PDF for Python, puis surligner le texte près de chaque lien en changeant la couleur de la police en rouge. Il utilise TextFragmentAbsorber avec une zone légèrement élargie autour de chaque rectangle de lien pour trouver et modifier le texte à proximité.

Cela peut être utilisé pour:

  • Marquer visuellement les liens dans un document
  • Améliorer l’accessibilité en mettant en évidence le contenu lié
  • Prétraitement des fichiers PDF avant la révision ou l’exportation

Pour chacune de ces annotations de lien, le script récupère sa frontière rectangulaire et étend légèrement cette région pour inclure le texte voisin, permettant une identification visuelle plus large. Il applique ensuite un TextFragmentAbsorber sur cette zone agrandie afin d’extraire les fragments de texte qui s’y trouvent. Ces fragments capturés sont modifiés en changeant leur couleur de police en rouge, marquant ainsi le texte environnant pour mettre en évidence et réviser. Après avoir appliqué toutes ces modifications, le document modifié est enregistré dans le chemin de sortie, en conservant les annotations mises en surbrillance et leur texte associé.

import aspose.pdf as ap
import sys
from os import path
from aspose.pycore import cast, is_assignable

def link_annotation_update_text_color(infile, outfile):
    document = ap.Document(infile)
    link_annotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.LINK)
    ]

    for la in link_annotations:
        ta = ap.text.TextFragmentAbsorber()
        rect = la.rect
        rect.llx -= 2
        rect.lly -= 2
        rect.urx += 2
        rect.ury += 2
        ta.text_search_options = ap.text.TextSearchOptions(rect)
        ta.visit(document.pages[1])
        for textFragment in ta.text_fragments:
            textFragment.text_state.foreground_color = ap.Color.red

    document.save(outfile)

Mettre à jour la bordure

Le script se concentre sur la première page du document et filtre toutes les annotations, ne sélectionnant que celles de type LINK — ces dernières représentent généralement des éléments interactifs, tels que des hyperliens ou des déclencheurs de navigation. Pour chacune de ces annotations de lien, le code les convertit en type LinkAnnotation et met à jour leur propriété couleur en rouge, les mettant en évidence visuellement afin qu’elles se distinguent du reste du contenu. Après que toutes les annotations de lien ont été modifiées, le document mis à jour est enregistré à l’emplacement de sortie défini, en conservant le nouveau style.

import aspose.pdf as ap
import sys
from os import path
from aspose.pycore import cast, is_assignable

def link_annotation_update_border(infile, outfile):
    document = ap.Document(infile)
    link_annotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.LINK)
    ]

    for la in link_annotations:
        link_annotation = cast(ap.annotations.LinkAnnotation, la)
        link_annotation.color = ap.Color.red

    document.save(outfile)

Mettre à jour la destination Web

Une fois les chemins en place, le document original est chargé à l’aide de la bibliothèque Aspose.PDF, rendant son contenu accessible à la modification. Le script se concentre ensuite sur la première page du document, en filtrant toutes les annotations et en ne sélectionnant que celles de type lien, représentant généralement des zones cliquables ou des hyperliens. Pour éviter les erreurs de type et garantir une manipulation sûre, chaque annotation est vérifiée avec is_assignable puis convertie en type LinkAnnotation approprié. Si le lien est associé à une GoToURIAction, signifiant qu’il pointe vers une adresse web, le script met à jour cette URI pour rediriger les utilisateurs vers “https://www.aspose.com”. Enfin, après que toutes les modifications souhaitées ont été appliquées, le document modifié est enregistré à l’emplacement de sortie spécifié.

import aspose.pdf as ap
import sys
from os import path
from aspose.pycore import cast, is_assignable

def link_annotation_update_web_destination(infile, outfile):
    document = ap.Document(infile)
    link_annotations = [
        a
        for a in document.pages[1].annotations
        if (a.annotation_type == ap.annotations.AnnotationType.LINK)
    ]

    for la in link_annotations:
        if is_assignable(la, ap.annotations.LinkAnnotation):
            annotation = cast(ap.annotations.LinkAnnotation, la)
            if is_assignable(annotation.action, ap.annotations.GoToURIAction):
                action = cast(ap.annotations.GoToURIAction, annotation.action)
                action.uri = "https://www.aspose.com"
    document.save(outfile)

Sujets liés aux liens