Donnez vie à vos documents numériques !
 

Changer la propriétés d’un calque avec un Javascript

abracadabraPDF Forums PDF – Général Changer la propriétés d’un calque avec un Javascript

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #46587
    jctremblay
    Participant

    Bonjour,

    Est-ce possible en JavaScript de changer l’état initial d’un calque spécifique à l’intérieur d’un PDF? Ex: J’ai un calque nommé «Base» et je voudrais changer la propriétés d’impression pour «Ne Jamais Imprimer».
    Ceci pour pouvoir le faire en lots à l’aide d’une action, ou à l’aide d’un bouton.

    Merci!  :jerisjaune:

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

    bonjour,
    Tu peux écrire un script pour “Le document sera imprimé” qui modifie l’état du calque.
    https://help.adobe.com/en_US/acrobat/acrobat_dc_sdk/2015/HTMLHelp/index.html#t=Acro12_MasterBook%2FJS_API_AcroJS%2FOCG_properties.htm
    …Puis un autre pour mettre l’état du calque pour “Le document a été imprimé”.
    @+
    :bonjour:

    #69171
    jctremblay
    Participant

    C’est une possibilité…

    Par contre, je ne trouve pas les informations pour modifier l’état «Ne jamais imprimer» vs «Imprimer lorsque visible». Du moins ceci ne semble pas détaillé dans la documentation.

    #69172
    jctremblay
    Participant

    Si je lis bien ici:

    Les propriétés d’impression ne sont pas possible avec un javascript. Il faut donc changer la visibilité seulement?

    https://acrobatusers.com/tutorials/creating-and-using-layers-ocgs-with-acrobat-javascript/index.html

    #69173
    bebarth
    Maître des clés

    Il n’y a pas de propriété pour l’impression des calques. Il faut changer leur état !
    @+
    :bonjour:

    #69174
    jctremblay
    Participant

    C’est là, mais pas possible avec un Javascript.

    J’ai essayer ceci dans le «document sera» «document est imprimer» et cela ne fonctionne pas. L’état, ne se chance pas. Sauf en sauvegardant le document. Probablement trop de code pour rien.

      var ocgArray = getOCGs();
          for (var i=0; i         if (ocgArray.name == “Base”) {
                ocgArray.state = !ocgArray.state;
            }
          }

    #69175
    bebarth
    Maître des clés

    Tu as oublié l’indice dans la table !

    Code:
    var ocgArray = getOCGs();
    for (var i=0; i     if (ocgArray.name == “Base”) {
            ocgArray.state = !ocgArray.state; // ou ocgArray.state = false;
        }
    }

    @+
    :bonjour:

    #69176
    jctremblay
    Participant

    Bien, ça ne marche pas plus…

    Avec la console oui, mais pas en action de document.

    #69177
    bebarth
    Maître des clés

    Effectivement !
    A chaque fois j’ai utilisé l’état des calques avec l’assistant d’action et ça fonctionne très bien… Cela ne t’est pas possible d’utiliser l’assistant d’action ???
    @+
    :bonjour:

    #69178
    jctremblay
    Participant

    Je n’étais pas fou alors!  :jerisjaune:

    Dans le cas de ces PDF, l’utilisation d’action n’est pas possible. Les documents PDF sont remis à des clients, qui ne doivent pas pouvoir imprimer la «Base» d’aucune façon. Souvent avec Reader. Le fournisseur vas devoir mettre la propriété «Ne Jamais Imprimer» à la main. J’essayais de voir comment le faire avec un JS. Mais cela ne semble pas possible.

    #69179
    Merlin
    Maître des clés

    Bonjour

    Si j’ai bien compris le tuto de Thom : avec JavaScript c’est la Visibilité du calque qu’il faudrait modifier avec JavaScript, après avoir modifié ainsi les Propriétés du calque :
    OCGPropsDlg.jpg

    Mais ces propriétés ne sont pas modifiables avec JavaScript et leur valeur par défaut n’est pas celle requise, donc on ne ferait que déplacer le problème et tourner en rond.
    :mur:

    #69180
    jctremblay
    Participant

    Dans ce que j’avais besoin, seulement la propiétés Print «Print when visible» qui devait changer pour «Never Print». 

    On va faire autrement.

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