Donnez vie à vos documents numériques !
 

Effacer les commentaires

abracadabraPDF Forums PDF – Général Effacer les commentaires

  • Créateur
    Sujet
  • #73358
    michel c.
    Participant

    Bonjour, je voudrais savoir s’il existait une fonction en javascript qui permet d’effacer les commentaires (boite de texte, ligne, cercle…)

    J’aimerais que mes élèves aient la possibilité de recommencer leurs exercices pour s’entrainer. Effacer les champs de texte, les cases cochées, les listes déroulantes…., ça je sais faire, mais pour certains exercices, ils dessinent sur le pdf en traçant des figures géométriques et insèrent des boites de textes.

    Merci

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Auteur
    Réponses
  • #73359
    bebarth
    Maître des clés

    bonsoir,

    Ça se fait avec la méthode « destroy » des annotations.

    @+

    #73361
    michel c.
    Participant

    Merci. Et en quoi ça consiste, y a-t-il un code que l’on peut mettre dans un script ?

    #73362
    bebarth
    Maître des clés

    Bonjour,

    tu peux utiliser l’exemple de l’api référence :

    var annots = this.getAnnots({ nPage:0 }); for (var j = 0; j < annots.length; j++) if (annots[j].type == "FreeText") annots[j].destroy();

    À la place de « FreeText » tu indiques le type d’annotation que tu veux supprimer.

    @+

    Attention : J’ai changé la variable i en j à cause du problème d’affichage lorsque i est entre crochets.

    Pour exécuter le script sur tout le document il faut écrire : var annots = this.getAnnots();

    • Cette réponse a été modifiée le il y a 8 mois et 1 semaine par bebarth.
    • Cette réponse a été modifiée le il y a 8 mois et 1 semaine par bebarth.
    #73368
    michel c.
    Participant

    Merci, je crois avoir trouvé la liste des différents types d’annotations à cette page.

    Je viens de faire un essai, ça fonctionne !

     

    • Cette réponse a été modifiée le il y a 8 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 8 mois et 1 semaine par michel c..
    • Cette réponse a été modifiée le il y a 8 mois et 1 semaine par michel c..
    Attachments:
    You must be logged in to view attached files.
    #73374
    michel c.
    Participant

    Par contre, juste une question, comment empêcher l’apparition du message d’erreur sur la console lorsqu’il n’y a aucune annotation à supprimer ? Par exemple si l’utilisateur clique 2 fois sur le bouton par mégarde.

    Merci

    Doc:Open:3: TypeError: annots is null

     

    #73377
    Merlin
    Maître des clés

    A priori l’utilisateur lambda ne voit pas les messages de la console mais pour bien faire les choses il faut protéger le script pour qu’il ne s’exécute que s’il y a des annotations :

     

    this.syncAnnotScan();
    var annots = this.getAnnots({ nPage:0 });
    for (var j = 0; j < annots.length; j++)
    if (annots != null && annots[j].type == "FreeText") {annots[j].destroy();}

     

    Pourquoi ai-je ajouté syncAnnotScan ?

    Parce-que c’est le moyen de s’assurer de ne rater aucune annotation, voir :

    https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/doc.html#syncannotscan

    #73378
    michel c.
    Participant

    Merci

    #73379
    bebarth
    Maître des clés

    bonjour,
    Tu as l’api reference en ligne où tu pourras trouver tous les types d’annotations :
    https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API_AcroJS.html#annotation-types
    Mais je pense que lorsqu’on programme régulièrement c’est pas mal de télécharger une version pdf.

    @+

    #73380
    Merlin
    Maître des clés

    Attention, j’ai modifié le script que j’ai posté !

    #73381
    bebarth
    Maître des clés

    …et ici, à la place de “if (annots != null…” on peut même juste écrire “if (annots…”.
    Donc :
    ...
    if (annots  && annots[j].type == "FreeText") {annots[j].destroy();}

    @+

    #73383
    Merlin
    Maître des clés

    “je pense que lorsqu’on programme régulièrement c’est pas mal de télécharger une version pdf.”

    Avant j’avais en permanence le document acrobatsdk_jsapiref.pdf ouvert dans Acrobat Reader pendant que je travaillais avec Acrobat Pro.

    Maintenant acrobatsdk_jsapiref.pdf est ouvert en permanence dans Foxit Reader.

     

Affichage de 11 réponses de 1 à 11 (sur un total de 11)
  • Vous devez être connecté pour répondre à ce sujet.