Changer la propriétés d’un calque avec un Javascript  (Lu 127 fois) Partager ce sujet Imprimer

1 B


jctremblay  26 avril 2021 : 18:52

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:

IP archivée


bebarth  26 avril 2021 : 19:56

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:

IP archivée


jctremblay  26 avril 2021 : 20:14

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.

IP archivée


jctremblay  26 avril 2021 : 20:27

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

IP archivée


bebarth  26 avril 2021 : 20:47

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

IP archivée


jctremblay  26 avril 2021 : 21:00

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 < ocgArray.length; i++) {
         if (ocgArray.name == "Base") {
            ocgArray.state = !ocgArray.state;
         }
      }

IP archivée


bebarth  26 avril 2021 : 21:21

Tu as oublié l'indice dans la table !
var ocgArray = getOCGs();
for (var i=0; i < ocgArray.length; i++) {
    if (ocgArray[i].name == "Base") {
        ocgArray[i].state = !ocgArray[i].state; // ou ocgArray[i].state = false;
    }
}
@+
 :bonjour:

IP archivée


jctremblay  26 avril 2021 : 21:33

Bien, ça ne marche pas plus...


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




IP archivée


bebarth  26 avril 2021 : 22:04

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:

IP archivée


jctremblay  26 avril 2021 : 23:09

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.

IP archivée


Merlin  27 avril 2021 : 15:35

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 :


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:

IP archivée


jctremblay  27 avril 2021 : 15:42

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.

IP archivée