Donnez vie à vos documents numériques !
 

Création automatique de liens dans un pdf

abracadabraPDF Forums PDF – Général Création automatique de liens dans un pdf

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #44105
    petitpied
    Membre

    Bonjour,

    Pour résumer, j’ai un pdf dans lequel j’ai des liens récurents à faire (par exemple j’ai plusieurs fois un mot et il doit pointer vers sa définition qui elle est unique). Existe t il un logiciel ou une méthode pour rechercher tout ses mots et les lier à une unique page ?

    Merci d’avance,

Affichage de 6 réponses de 1 à 6 (sur un total de 6)
  • Auteur
    Réponses
  • #52613
    Merlin
    Maître des clés

    Salut,

    faute de savoir quelle version d’Acrobat tu utilises je te donne le script “brut”.
    A toi de l’installer dans une Action d’Acrobat X, ou bien dans le Traitement par lot des versions antérieures.

    Tu peux également le copier-coller dans la Console et ainsi l’exécuter directement.

    Les variables en rouge sont les éléments à éventuellement modifier :
    – l’épaisseur du contour de l’objet Lien
    – la couleur du contour (si contour = zéro, la couleur n’a pas d’importance)
    – le mot à rechercher par défaut (PDF)
    – la cible par défaut de l’hyperlien (http://abracadabraPDF.net/)

    :bonjour:

    /* AddLinks */

    /* valeur du contour en point, zero = pas de contour */
    var contour = “1“;
    /* couleur du contour, remplacer “blue” par black, white, yellow, red, etc. */
    var couleur = color.blue;
    /* mot a rechercher par defaut, ne pas supprimer les guillemets */
    var defaultAnswer1 = “PDF“;
    //cible par defaut du lien, ne pas supprimer les guillemets
    var defaultAnswer2 = “http://abracadabraPDF.net/“;
    var dialogTitle = “abracadabraLinks”;
    var motachercher = app.response(“Mot à rechercher (respectez la casse) :”, dialogTitle, defaultAnswer1);
    if (motachercher != null)
        {var dialogTitle = “abracadabraLinks”;
    var urlaplacer = app.response(“URL de la cible du lien :”, dialogTitle, defaultAnswer2);
    global.OK = 1;
    }
    else {global.OK = 0;}
    if (global.OK == “1”)
        {
        var p=this.pageNum;
    var numWords = this.getPageNumWords(p);
    for (var i=0; i {
        var ckWord = this.getPageNthWord(p, i, true);
        if ( ckWord == motachercher)
        {
    var q = this.getPageNthWordQuads(p, i);
    // convert quads in Default User Space to Rotated
    // User Space used by Links.
    m = (new Matrix2D).fromRotated(this,p);
    mInv = m.invert()
    r = mInv.transform(q)
    r=r.toString()
    r = r.split(“,”);
    l = addLink(p, [r[4], r[5], r[2], r[3]]);
    l.borderColor = couleur
    l.borderWidth = contour
        l.setAction(“app.launchURL(urlaplacer);”);
      }
        //else
        //{app.alert({ cMsg: “Aucune occurence de ” + motachercher + ” n’a été trouvée dans le document actif !”, cTitle: “abracadabraLinks” });
        //}
    }
    }

    #52614
    petitpied
    Membre

    Merci beaucoup de ta réponse.
    Je vais essayer cela et je ferais un petit feedback.

    Ca serait pour une version de Adobe Acrobat X pro. Si tu as donc quelque chose de plus adapté à cette version, je suis preneur bien entendu.

    #52615
    petitpied
    Membre

    Je l’ai peut être mal exprimé mais il y a également des liens internes au pdf (mot vers vue de page), comment dois-je faire (quelque chose de spécial à rentrer au niveau de l’url ?) ?
    Après, j’ai l’impression que la recherche de mot ne s’applique qu’à la page en cours de visualisation et non à tout le document (j’ai un nombre de pages assez important et de nombreux liens à mettre en place).

    Merci encore.

    #52616
    Merlin
    Maître des clés

    En effet, ce script ne fonctionne pas, je l’ai barré.
    :oh:

    Ci-dessous le script d’exemple copié-collé depuis la doc d’Acrobat, mais il faudra l’exécuter depuis la Console pour pouvoir facilement en modifier les variables (en rouge, où “Acrobat” est le mot à rechercher) :

    for (var p = 0; p {
    var numWords = this.getPageNumWords(p);
    for (var i=0; i{
    var ckWord = this.getPageNthWord(p, i, true);
    if ( ckWord == “Acrobat“)
    {
    var q = this.getPageNthWordQuads(p, i);
    // Convert quads in default user space to rotated
    // User space used by Links.
    m = (new Matrix2D).fromRotated(this,p);
    mInv = m.invert()
    r = mInv.transform(q)
    r=r.toString()
    r = r.split(“,”);
    l = addLink(p, [r[4], r[5], r[2], r[3]]);
    l.borderColor = color.red;
    l.borderWidth = 1;
    l.setAction(“this.getURL(‘http://www.example.com/‘)”);
    }
    }
    }

    La Console affiche ensuite le mot “undefined” quand le script à terminé.

    Concernant les liens internes au document voir :
    http://abracadabrapdf.net/forum/index.php/topic,1425.0.html
    et
    http://abracadabrapdf.net/forum/index.php/topic,982.msg3713.html

    :Smiley01:

    #52617
    petitpied
    Membre

    J’avoue que je comprend pas bien le topic en rapport avec l’indexation des renvois de pages (pas assez synthétique pour un pauvre ignorant de ce genre de langage même si je m’y intéresse de plus en plus) . Car autant j’ai réussi à exécuter le correctement ton premier script, pour le reste, j’aurai besoin de quelques explications ou mises en avant.  Et voir si il répond bien à la problématique suivante : Poser des liens en automatiques en entrant par exemple un mot souvent répété pour le faire pointer sur une page précise.

    Après, je conçois que vous n’avez pas forcement le temps ou l’envie de faire ce travail à ma place.

    Thx.

    #52618
    Merlin
    Maître des clés

    Personnellement, avant le temps ou l’envie, il y a surtout que je ne sais pas faire…
    Je sais bien comment bricoler un script, et en particulier celui qui pointe vers des URL, mais je ne sais pas comment faire pour pointer à l’intérieur d’un même document.
    :joker:

    Cependant, notre grand-gourou Alex ne devrait pas tarder à revenir et sa réponse sera certainement limpide.
    :Smiley01:

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