Donnez vie à vos documents numériques !
 

Détecter la langue du lecteur (Reader, Acrobat) dans un script JS

abracadabraPDF Forums PDF – Général Détecter la langue du lecteur (Reader, Acrobat) dans un script JS

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #43810
    eclipse
    Membre

    Bonjour,

    Le titre est parlant, nan ?  :Euuuh:
    Je rappelle que j’utilise Scribus 1.3.6.

    J’aimerais savoir si on peut utiliser un script JS à l’ouverture d’un document PDF afin de savoir quelle est la locale (fr, en) du lecteur.
    Puis afficher le document dans la langue utilisée (affichage selon les calques ; un calque Texte par langue).

    Un petit script pour cela me serait d’une aide précieuse.  :priere:
    Merci d’avance.

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

    Salut,

    c’est assez simple, voici un exemple de code, si tu veut aller plus loin tu trouvera de bons exemples avec les utilitaires abracadabraTOOLS et abracadabraSignets dont le code commence ainsi.

    Pour en savoir plus :

    AcroJS :
    http://partners.adobe.com/public/developer/en/acrobat/sdk/AcroJS.pdf

    AcroJS guide du JavaScript :
    http://www.adobe.com/devnet/acrobat/pdfs/AcroJSGuide.pdf

    Code:
    //langage-language
    if (app.language == “FRA”)
    {
    //code a executer
    }

    else if (app.language == “DEU”)
    {
    //code a executer
    }

    else if (app.language == “SVE”)
    {
    //code a executer
    }

    else if (app.language == “ITA”)
    {
    //code a executer
    }

    else if (app.language == “ESP”)
    {
    //code a executer
    }

            else
            {
    //code a executer
    }

    :soleil:

    #50865
    eclipse
    Membre

    Oui mais non !

    En fait je me demande si Reader (sous linux) me détecte bien ou pas la langue !

    Avant de poster, j’avais bien regardé la doc que tu conseilles…
    J’ai aussi essayé une fonction comme tu le dis, mais rien ne se passe (aucun message d’erreur).

    Par ailleurs, j’ai créé 2 boutons sur la 1ère page, un pour le français et un pour l’anglais. Quand on clique sur le bouton anglais, le calque texte anglais dois s’afficher… Ce qui se passe, mais si on passe à la page 2, béh retour à l’état d’affichage initial des calques.

    Code:
    if (app.language == “FRA” ) {
    var ocgs = this.getOCGs();
    for (var i=0; i ocgs.state = false;
    for (var i=0; i     if (ocgs.name == “text_fr”)
        ocgs.state = !ocgs.state;
        if (ocgs.name == “fond”)
        ocgs.state = !ocgs.state;
        if (ocgs.name == “boutons”)
        ocgs.state = !ocgs.state;
        if (ocgs.name == “boutons_js”)
        ocgs.state = !ocgs.state;
        if (ocgs.name == “menu_js”)
        ocgs.state = !ocgs.state;
        if (ocgs.name == “cover”)
        ocgs.state = !ocgs.state;
    }
    }

    Donc la question est :
    Est-il possible de détecter la langue au départ, puis d’afficher un calque (en fonction de la langue) et ce sur toutes les pages ?

    Ton script, sur les signets est intéressant mais interagit sur l’interface et non directement sur le document.
    Je précise aussi que j’ai regardé  le site abracadabrapdf en entier et déjà réussi à adapter pas mal de script dans Scribus.
    Je bute sur celui-ci en ce moment !  :mur:
    Merci pour les réponses.

    #50866
    Merlin
    Maître des clés

    Ton script, sur les signets est intéressant mais interagit sur l’interface et non directement sur le document.

    Il détecte la langue utilisée par l’interface, le reste est fonction du code à exécuter.

    Mais il est tout à fait possible de détecter ce paramètre et d’afficher un calque ou un autre en fonction. De la même façon que mes utilitaires et leur fichiers Lisez-moi affichent des menus localisés ou une page en particulier.
    Maintenant, savoir si le calque s’applique seulement à certaines pages ou au document entier dépend du logiciel auteur (Scribus) et de la façon dont le document est fait…

    Est-ce qu’on pourrait (a)voir un extrait-type de ce document ?

    ;)

    #50867
    eclipse
    Membre

    J’ai refais un fichier exemple tout neuf, tout propre, en me disant que peut-être… Hélas c’est le néant, le vide !!

    Donc, voici les sources avec un fichier PDF, puis le fichier SLA pour Scribus 1.3.6.
    J’ai mis 2 captures d’écran pour l’export PDF dans Scribus afin de bien incorporer le JS à l’ouverture du document.
    http://dl.free.fr/rh3QJg1yD

    Je sais que les calques fonctionnent puisque les boutons sont actifs (uniquement sur la page 1).

    J’ai peur pour mes cheveux ! Merci de jeter un yeux sur ce soucis.
    Je n’ai jamais vu de PDF de ce type…. google serait-il en panne ?!?!  :doute:

    #50868
    Merlin
    Maître des clés

    Je n’ai jamais vu de PDF de ce type…. google serait-il en panne ?!?

    En attendant que j’examine tes fichiers voici un lien vers un PDF multicalque commandé par des boutons :
    https://download.yousendit.com/bFFOeFVhU1BwcFZFQlE9PQ

    et un tuto avec un exemple d’animation à télécharger :
    http://www.acrobatusers.com/tutorials/2006/create_use_layers

    :soleil:

    #50869
    Merlin
    Maître des clés

    Un grand merci, grâce à toi je viens de découvrir les fonctions PDF de Scribus ainsi que la version pour Mac OSX !
    Ce logiciel est extra !

    Sinon, le problème vient du fait que tu fais exécuter le même code dans les deux boutons, donc les deux ont la même action.
    Le script à l’ouverture n’est pas bon non plus car il ne gère que deux possibilités (FRA ou ENG) sans état par défaut.

    On va partir du principe que l’état par défaut c’est ENG (Reader ou Acrobat en anglais), “par défaut” signifie que c’est celui qui vaudra aussi pour toutes les autres langues que le français (italien, espagnol, chinois, etc.).
    L’état modificateur c’est FRA (Reader ou Acrobat en français), c’est donc celui que l’on va détecter pour adapter l’état des calques en fonction, sinon on reste sur l’état par défaut.
    Donc dans Scribus on va définir l’état du calque ENG sur visible, et le calque FRA sur invisible (image jointe).

    Le code pour le script à l’ouverture :

    Code:
    //meme code que dans le bouton VF mais
    //il ne s’execute que si l’application est en francais
    //inutile de détecter un autre langage

    if (app.language == “FRA” )
    {
    var ocgs = this.getOCGs();
    for (var i=0; i ocgs.state = false;
    for (var i=0; i        {
       if (ocgs.name == “text_fr”)
       ocgs.state = !ocgs.state;
       if (ocgs.name == “fond”)
       ocgs.state = !ocgs.state;
    }
    }

    Code pour le bouton VF :

    Code:
    //on supprime la condition FRA
    //car le bouton doit fonctionner dans tous les cas

    var ocgs = this.getOCGs();
    for (var i=0; i//ici on precise FALSE
    ocgs.state = false;
    for (var i=0; i{
    if (ocgs.name == “text_fr”)
    ocgs.state = !ocgs.state;
    if (ocgs.name == “fond”)
    ocgs.state = !ocgs.state;
    }

    Code pour le bouton VE :

    Code:
    //on supprime la condition FRA
    //car le bouton doit fonctionner dans tous les cas

    var ocgs = this.getOCGs();
    for (var i=0; i//ici on precise TRUE
    ocgs.state = true;
    for (var i=0; i{
    if (ocgs.name == “text_fr”)
    ocgs.state = !ocgs.state;
    if (ocgs.name == “fond”)
    //ici on supprime la condition inverse (!) apres =
    //pour le calque de fond
    ocgs.state = ocgs.state;
    }

    :extra:

    Lien vers le PDF qui fonctionne : https://acrobat.com/#d=Ph5oYk-a3iBDOtZkVnquHA

    [attachment deleted by admin]

    #50870
    eclipse
    Membre

    YESSSS

    J’ai regardé rapidement le PDF que tu as “re-scripté” et çà à l’air de faire ce que je veux, je testerais avec un reader en anglais.

    Sinon, si ca peut t’intéresser, j’avais fais un PDF en novembre dernier (2009), avec les calques sur une seule page ; donc Scribus est comme tu le dis génial !!!
    En fait, plus je découvre le JS, et plus je me dis que Scribus cummule certaines fonctions de Indesign et d’Acrobat… niveau interactif  :soleil:
    https://acrobat.com/#d=*3VXM2BD1WPVBUP1-a30TQ

    Je regarde de très près le code et je l’adapte sur mon PDF actuel et je te donnerais les résultats…

    Un grand merci.

    #50871
    eclipse
    Membre

    J’ai crié victoire trop vite ! Je me doutais bien qu’un truc pas cool arriverait !!!

    Je commence par TON PDF traficoté dans Acrobat fonctionne bien quelque soit la langue de Reader.
    Bon ça on en parle plus !

    Maintenant place aux choses un peu sérieuse. Tu as triché  :indecis:
    Pour que tu comprennes bien, d’une façon générale les gens qui se servent de Scribus ne vont pas investir dans Acrobat (d’ailleurs il faut un certain temps pour le maitriser), et en plus Adobe semble ignorer Linux (du moins pour les soft payant).

    Deux images et je t’explique…
    t9dwt3oamo_tn.png

    o3h1qu4a5f_tn.png

    L’image 1 représente le PDF créé uniquement avec Scribus ; aucune modification dans Acrobat.
    L’image 2 est celle de ton PDF mofifié dans Acrobat.

    Pour faire simple il s’agit, de l’état initial des calques. Comme tu le vois, pour fonctionner,
    il faut que l’état des calques (fr et en) soit sur “Visibilité -> Visible lorsque activé”.

    Voilà, c’est pas à comprendre je pense !
    Cependant, j’ai regardé dans la doc, mais il semble que ca ne fonctionne pas à cause des authorisations “NotAllowed blah blah”.
    Soit effectivement, il faut les authorisations dans Reader, soit vu mon niveau JavaScript, ca coince !

    Code:
    var ocgs = this.getOCGs();
    for (i=0; i ocgs.setIntent( [ocgs.constants.intents.view, ocgs.constants.intents.design]);
    }

    Je conclus !
    Si et seulement si tu veux t’arracher les cheveux ; Comme tu maitrise bien Scribus à présent, utilise uniquement Scribus et Reader afin de voir si cela fonctionne…
    Tu es interdit de Acrobat  :???:

    Et si cela ne fonctionne pas, je garde ta méthode façon Acrobat, mais pour une autre utilisation…

    En tout cas, merci de regarder tout ça ( c’est rare de trouver des gens pour qui l’Open Source a une certaine considération…
    .

    #50872
    Merlin
    Maître des clés

    En fait je n’ai pas “triché”, j’ai juste essayer de contourner un (gros) bug de Scribus version Mac.
    :geek:

    Comme on peut le voir sur les images jointes, dans l’éditeur JavaScript de Scribus version Mac il manque les menus (Fichier & Edition) qui permettent d’enregistrer les modifications…
    Et comme j’ai fait ça dimanche (pluvieux) et que le PC que j’utilise habituellement était squaté par les enfants je me suis contenté de Scribus Mac et d’Acrobat Mac pour accomplir mon œuvre !

    Donc j’ai effectivement placé les scripts directement depuis Acrobat, et j’ai aussi modifié l’état des calques, mais sans penser à mal.
    ;)

    Je ne connais pas Scribus aussi bien que toi mais il y a certainement un moyen d’y modifier l’état des calques…
    :doute:

    Sinon, je n’ai pas de considération particulière pour l’OpenSource, mais j’en ai pour ce qui peut représenter l’avenir dans les métiers qui m’intéressent.
    (Tout comme Adobe qui guette le développement de Linux en attendant qu’il atteigne le “seuil de rentabilité”)

    Après une journée d’utilisation je vois dans Scribus l’équivalent de XPress 5 ou 6 : ergonomie parfois lourde (moins que les XPress cités cependant ;-)) et absence totale d’automatismes, même les plus simples.
    InDesign a encore quelques années-lumière d’avance et justifie l’investissement que représente son prix.

    Cependant je dois confesser que quand je vois mes clients/stagiaires utiliser InDesign je me dis que 75% d’entre-eux pourraient tout aussi bien utiliser Scribus…
    Souvent c’est comme si on leur achetait des Ferrari pour aller faire les courses au centre-ville.
    :joker:

    [attachment deleted by admin]

    #50873
    Merlin
    Maître des clés

    C’est une seule pièce jointe par message, voici la suite :

    [attachment deleted by admin]

    #50874
    eclipse
    Membre

    Euhh je ne te reprochais rien…

    Ensuite, tu peux éventuellement reporter le bug de scribus si tu veux
    http://bugs.scribus.net/my_view_page.php
    (il faudra t’inscrire)

    Je ne connais pas Scribus aussi bien que toi mais il y a certainement un moyen d’y modifier l’état des calques…

    Oui par les scripts…
    Comme tu es un expert en JS… je me disais que peut être… Donc, si tu as un peu de temps sous ton PC Windows…

    Après une journée d’utilisation je vois dans Scribus l’équivalent de XPress 5 ou 6 : ergonomie parfois lourde (moins que les XPress cités cependant ;-)) et absence totale d’automatismes, même les plus simples.
    InDesign a encore quelques années-lumière d’avance et justifie l’investissement que représente son prix.

    Chacun son point de vue, mais perso je pense que pour des fonction de base (ne pas considérer le JS), Scribus est tout a fait capable de rivaliser avec QXP7 et ID5 (cs2).
    Sans compter que Scribus produit des PDF print qui vont bien… ce que d’après ce livre *, est plutot pénible avec une solution proprio…

    Mais bon arrêtons là les comparaison qui n’ont pas lieu !!!

    J’ai d’autres questions que je viendrais poser en temps voulu sur du JS avec Scribus…
    Tu vas pouvoir faire un DVD de Scribus et du PDF !!!!!  :D

    * ]http://www.amazon.fr/PDF-pour-pr%C3%A9presse-Acrobat/dp/2212120877]
    .

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