PDF Tooltip en utilisant Python

Ajouter une Info-bulle au Texte Recherché en ajoutant un Bouton Invisible

Ce code montre comment ajouter des info-bulles à des fragments de texte spécifiques dans un document PDF en utilisant Aspose.PDF. Les info-bulles s’affichent lorsque le curseur de la souris survole le texte correspondant.

Le code suivant vous montrera comment réaliser cette fonctionnalité :


    import aspose.pdf as ap

    document = ap.Document()
    document.pages.add().paragraphs.add(
        ap.text.TextFragment("Déplacez le curseur de la souris ici pour afficher une info-bulle")
    )
    document.pages[1].paragraphs.add(
        ap.text.TextFragment(
            "Déplacez le curseur de la souris ici pour afficher une info-bulle très longue"
        )
    )
    document.save(output_pdf)

    # Ouvrir le document avec le texte
    document = ap.Document(output_pdf)
    # Créer un objet TextAbsorber pour trouver toutes les phrases correspondant à l'expression régulière
    absorber = ap.text.TextFragmentAbsorber(
        "Déplacez le curseur de la souris ici pour afficher une info-bulle"
    )
    # Accepter l'absorbeur pour les pages du document
    document.pages.accept(absorber)
    # Obtenir les fragments de texte extraits
    text_fragments = absorber.text_fragments

    # Boucler à travers les fragments
    for fragment in text_fragments:
        # Créer un bouton invisible à la position du fragment de texte
        field = ap.forms.ButtonField(fragment.page, fragment.rectangle)
        # La valeur de alternate_name sera affichée comme info-bulle par une application de visualisation
        field.alternate_name = "Info-bulle pour le texte."
        # Ajouter le champ de bouton au document
        document.form.add(field)

    # Ensuite, un exemple d'info-bulle très longue
    absorber = ap.text.TextFragmentAbsorber(
        "Déplacez le curseur de la souris ici pour afficher une info-bulle très longue"
    )
    document.pages.accept(absorber)
    text_fragments = absorber.text_fragments

    for fragment in text_fragments:
        field = ap.forms.ButtonField(fragment.page, fragment.rectangle)
        # Définir un texte très long
        field.alternate_name = (
            "Lorem ipsum dolor sit amet, consectetur adipiscing elit,"
            " sed do eiusmod tempor incididunt ut labore et dolore magna"
            " aliqua. Ut enim ad minim veniam, quis nostrud exercitation"
            " ullamco laboris nisi ut aliquip ex ea commodo consequat."
            " Duis aute irure dolor in reprehenderit in voluptate velit"
            " esse cillum dolore eu fugiat nulla pariatur. Excepteur sint"
            " occaecat cupidatat non proident, sunt in culpa qui officia"
            " deserunt mollit anim id est laborum."
        )
        document.form.add(field)

    # Enregistrer le document
    document.save(output_pdf)

Créer un bloc de texte caché et l’afficher au survol de la souris

Ce snippet de code Python montre comment ajouter du texte flottant à un document PDF, qui apparaît lorsque le curseur de la souris survole une zone spécifique.

Tout d’abord, un nouveau document PDF est créé, et un paragraphe contenant le texte “Déplacez le curseur de la souris ici pour afficher le texte flottant” est ajouté. Le document est ensuite enregistré.

Ensuite, le document enregistré est rouvert, et un objet TextAbsorber est créé pour trouver le fragment de texte précédemment ajouté. Ce fragment de texte est ensuite utilisé pour définir la position et les caractéristiques du champ de texte flottant.

Un objet TextBoxField est créé pour représenter le champ de texte flottant, et ses propriétés telles que la position, la valeur, le statut en lecture seule, et la visibilité sont configurées en conséquence. De plus, un nom unique et des caractéristiques d’apparence sont attribués au champ.

Le champ de texte flottant est ajouté au formulaire du document, et un champ de bouton invisible est créé à la position du fragment de texte original. Les événements HideAction sont assignés au champ de bouton, spécifiant que le champ de texte flottant doit apparaître lorsque le curseur de la souris entre dans sa proximité et disparaître lorsque le curseur en sort.

Enfin, le champ de bouton est ajouté au formulaire du document, et le document modifié est enregistré.

Cet extrait de code fournit une méthode pour créer des éléments de texte flottants interactifs dans un document PDF en utilisant Aspose.PDF pour Python.


    import aspose.pdf as ap

    document = ap.Document()
    document.pages.add().paragraphs.add(
        ap.text.TextFragment("Déplacez le curseur de la souris ici pour afficher le texte flottant")
    )
    document.save(output_pdf)

    # Ouvrir le document avec du texte
    document = ap.Document(output_pdf)
    # Créer un objet TextAbsorber pour trouver toutes les phrases correspondant à l'expression régulière
    absorber = ap.text.TextFragmentAbsorber(
        "Déplacez le curseur de la souris ici pour afficher le texte flottant"
    )
    # Accepter l'absorbeur pour les pages du document
    document.pages.accept(absorber)
    # Obtenir le premier fragment de texte extrait
    text_fragments = absorber.text_fragments
    fragment = text_fragments[1]

    # Créer un champ de texte caché pour le texte flottant dans le rectangle spécifié de la page
    floating_field = ap.forms.TextBoxField(
        fragment.page, ap.Rectangle(100.0, 700.0, 220.0, 740.0, False)
    )
    # Définir le texte à afficher comme valeur du champ
    floating_field.value = 'Ceci est le "champ de texte flottant".'
    # Nous recommandons de rendre le champ 'readonly' pour ce scénario
    floating_field.read_only = True
    # Définir le drapeau 'hidden' pour rendre le champ invisible à l'ouverture du document
    floating_field.flags |= ap.annotations.AnnotationFlags.HIDDEN

    # Définir un nom de champ unique n'est pas nécessaire mais autorisé
    floating_field.partial_name = "FloatingField_1"

    # Définir les caractéristiques de l'apparence du champ n'est pas nécessaire mais améliore
    floating_field.default_appearance = ap.annotations.DefaultAppearance(
        "Helv", 10, ap.Color.blue.to_rgb()
    )
    floating_field.characteristics.background = ap.Color.light_blue.to_rgb()
    floating_field.characteristics.border = ap.Color.dark_blue.to_rgb()
    floating_field.border = ap.annotations.Border(floating_field)
    floating_field.border.width = 1
    floating_field.multiline = True

    # Ajouter le champ de texte au document
    document.form.add(floating_field)
    # Créer un bouton invisible à la position du fragment de texte
    button_field = ap.forms.ButtonField(fragment.page, fragment.rectangle)
    # Créer une nouvelle action de masquage pour le champ spécifié (annotation) et le drapeau d'invisibilité.
    # (Vous pouvez également référer le champ flottant par le nom si vous l'avez spécifié ci-dessus.)
    # Ajouter des actions à l'entrée/sortie de la souris sur le champ de bouton invisible

    button_field.actions.on_enter = ap.annotations.HideAction(
        floating_field.partial_name, False
    )
    button_field.actions.on_exit = ap.annotations.HideAction(
        floating_field.partial_name
    )

    # Ajouter le champ de bouton au document
    document.form.add(button_field)

    # Enregistrer le document
    document.save(output_pdf)