Incrémenter un numéro automatiquement. - RÉSOLU  (Lu 29905 fois) Partager ce sujet Imprimer

1 B


Merlin  01 février 2012 : 11:51

Merci de cette précision.
Pour être encore plus précis : cette modification est intervenue avec Acrobat X.1
voici un script qui permet de localiser les dossiers JavaScripts :

Sélectionnez et copiez le code JavaScript ci-dessous, dans Acrobat tapez CRTL-J (CMD-J sur Mac) pour activer la console, effacez le texte par défaut, collez le code JavaScript, sélectionner tout le code JavaScript et appuyez sur la touche Entrée (Enter). Si vous utilisez un petit clavier sans touche Entrée utilisez CTRL-Retour (Return), ou Majuscule-Retour sur Mac.

La boite d'alerte qui suit indique les chemins d'accès des deux dossiers JavaScripts.
Placé dans le dossier JavaScripts de l'application, un script JavaScript sera disponible pour tous les utilisateurs de l'ordinateur.
Placé dans le dossier JavaScripts de l'utilisateur, un script JavaScript sera disponible pour cet utilisateur uniquement. */


/* Code JavaScript à copier : */
/***************************************************************************/
if (app.language == "FRA")
 {
 var dossierApp = "Chemin d'acc\u00E8s au dossier \"JavaScripts\" de l'application :\n\n";
 var dossierUser = "Chemin d'acc\u00E8s au dossier \"JavaScripts\" utilisateur de la session active :\n\n";
 var alertt = "Le dossier \"JavaScripts\" utilisateur n'existe pas.";
 }
else
 {
 var dossierApp = "Path to \"JavaScripts\" Application folder:\n\n";
 var dossierUser = "Path to \"JavaScripts\" User folder:\n\n";
 var alertt = "There is no user custom \"JavaScripts\" folder available.";
 }
var AppScripts = app.getPath({cCategory: 'app', cFolder: 'javascript'});
try {var userScript = app.getPath({cCategory: 'user', cFolder: 'javascript'});}
catch(e) {var userScript = alertt;}
app.alert("abracadabraPDF\n\n\n\n" + dossierApp + AppScripts + "\n\n--------------\n\n" + dossierUser + userScript, 2,0);
/***************************************************************************/


 :Smiley01:

IP archivée


ToniOsX  31 janvier 2012 : 16:30

Voilà la maquette du PageMaster.pdf.
Placement du script dans le répertoire JavaScript d'Acrobat sur PC:
C:/Programme/Adobe/Acrobat9.0/Acrobat/Javascript
Voilà la maquette du PageMaster.
Placement du script dans le répertoire JavaScript d'Acrobat sur Mac:
Aller>Applications>Adobe Acrobat  9 Pro>Adobe Acrobat Pro.app>
Ctrl Clic > Afficher le contenu du paquet>Contents>MacOS>JavaScripts
Salut à tous,

j'ai eu besoin de ré-utiliser le javascript de création de machines à souches, étant passé à Acrobat X sur mac le répertoire javascript n'est plus au même endroit, maintenant il est à :

Applications>Adobe Acrobat Pro > Ctrl Clic (ou clic droit) > Afficher le contenu du paquet>Contents>Resources>JavaScripts

Si ça peut servir à quelqu'un. :Smiley03:

IP archivée


Merlin  04 avril 2011 : 11:21

  =   :RoiReine:

IP archivée


alex  04 avril 2011 : 09:09

Il y a quelques petits bugs. En effet, la page MASTER devrait être la référence.
On corrigera ça dans une version plus aboutie dès que j'en aurai le loisir.

IP archivée


ToniOsX  04 avril 2011 : 08:53

J'ai écris ces codes à la volée, sans tester, il est donc assez normal qu'il y ait des erreurs.
Utilisez-vous bien le bon "Machine à souches.pdf"?
Bonjour,

pour du code "à la volée", ça fonctionne très bien (après quelques petits réglages).

Oui, j'ai utilisé le bon "Machine à souches.pdf" (il n'y en qu'un de toute façon).
Juste pour comprendre, à quoi cela sert-il d'avoir un fichier "PageMasterSouche.pdf" ? Et pourquoi si je change l'emplacement des champs dans ce fichier, ça ne les change pas sur les pages générées ?
Il n'y a qu'en changeant l'emplacement des champs dans la 2ème page du fichier "Machine à souches.pdf" que ça a fonctionné pour moi.

En tout cas merci encore, ça m'a enlevé une sacrée épine du pied. :RoiReine:

IP archivée


alex  01 avril 2011 : 18:23

J'ai écris ces codes à la volée, sans tester, il est donc assez normal qu'il y ait des erreurs.
Utilisez-vous bien le bon "Machine à souches.pdf"?

Je ferai à partir de cette ébauche une application mixte (souches et tickets) qu'on pourrait peut-être intégrer à abracadabraTool avec la bénédiction de Merlin, car apparemment, vu le nombre de téléchargements, ça intéresse du monde.

Attention: il n'est pas possible, dans cette application, de dupliquer des codes bar avec des contenus variables.




IP archivée


Merlin  01 avril 2011 : 16:26

Bravo Alex !

 :bravo:
 :bonjour:

IP archivée


ToniOsX  01 avril 2011 : 11:34

Merci beaucoup !!! C'est nickel (ou presque).
Je ne sais pas s'il y a un bug dans la générations des digits ou si c'est mon affichage, jusqu'à 110 tout va bien, au delà j'ai l'impression qu'il y a des chiffres qui se supperposent, ci-joint une capture sur AcrobatPro :

.

En tout cas merci beaucoup déjà !!! :bonjour:

---

Edit : ce n'est pas à partir de 110, en fait ça dépend du nombre de souches demandées mais c'est toujours vers la fin.
En demandant 1 souche par page et 35 souches, c'est bon jusqu'à 360 et c'est ensuite que ça se met en superposition :

.

Ah ! mais suis-je bête !!!! Je demande 35 souches donc jusque 351/360, donc c'est bon, mais pourquoi ais-je 3 pages en plus alors ? (juste pour savoir, car à priori c'est bon comme ça).

--

Edit 2 : j'ai trouvé, ce sont les pages en plus dans le document "Machine à souches.pdf" je pense...

IP archivée


alex  01 avril 2011 : 10:43

Edition des souches:
Voilà le script de l'application:
3-Le script machinesouches.js à intégrer dans le répertoire JavaScript.

L'extension .jpg doit être remplacée par .js


Nota:
Le nombre de tickets par souche est un paramètre fixé à 10 en début de ce script.
C'est le maximum que je puisse faire dans le cadre de ce forum.

IP archivée


alex  01 avril 2011 : 10:34

Edition des souches:
Voilà le second à adapter (ne pas changer les noms des champs)
2-La page PageMasterSouche.pdf qui embarque la maquette des souches (3 dans mon exemple).


IP archivée


alex  01 avril 2011 : 10:29

Edition des souches:
Pour réaliser ça, il faut tout reprendre, ce que j'ai fait:
1-Le document de paramétrage "Machine à souches"
2-La page PageMasterSouche.pdf qui embarque la maquette des souches (3 dans mon exemple).
3-Le script machinesouches.js à intégrer dans le répertoire JavaScript.
Voici le premier élément.

IP archivée


ToniOsX  01 avril 2011 : 08:59

Salut,
je vais essayer d'être plus explicite alors.

Je dois créer des carnets de 10 tickets, la numérotation de ceux-ci se faisant grâce à un numéroteur en machine je ne m'en occupe pas.

Sur la couverture de chacun de ses carnets, je dois mettre les numéros des tickets qui composent ce carnet (1 à 10, 11 à 20, 21 à 30, 31 à 40 etc). C'est les couvertures que je dois faire et imprimer (plusieurs centaines voire milliers).

Donc, sur mes couvertures je vais avoir 2 champs (A et B pour la 1ère, C et D pour la 2ème etc).
.

Donc ce que je souhaite modifier dans le script proposé :
1 - que je renseigne le champ A (et le chiffre d'arrêt du script)
2 - que le js calcule A + 9 et le mette dans le champ B
3 - que le js reprenne la valeur de B et calcule B + 1 et le mette dans le champ C
4 - que le js reprenne la valeur de C et calcule C + 9 et le mette dans le champ D
etc...

En valeurs à rentrer je n'aurais donc que la valeur de A et le chiffre auquel je voudrais que le script s'arrête (exemple de 1 à 400, de 401 à 800 etc), me permettant de faire plusieurs fichiers au lieu d'un seul très gros.

Concernant les digits, c'est très bien comme c'est là, vu que je vais certainement dépasser le chiffre de 10 000, que les digits soient sur 5 chiffres c'est très bien.

En espérant avoir été clair.
Merci.

IP archivée


Merlin  31 mars 2011 : 19:13

Alex : la question de base de notre ami part d'ici : http://forum.macbidouille.com/index.php?s=514521edb131062d474e31321f67636f&showtopic=342001

Et il ne semble pas y avoir de solution plus simple dans InDesign, ce qui est aussi mon humble avis d'expert certifié sur ces deux logiciels.

Mais je crois que vous partez dans des solutions trop compliquées faute d'un bon audit préalable : à la base ce que voulait ToniOsX c'est que dans le fichier ci-joint le simple remplissage du champ de gauche (Texte2) remplisse automatiquement le champ de droite (Texte3) avec la valeur (X + 9) tout en conservant les zéros affichés à gauche, pour toujours afficher un nombre à 4 chiffres.

J'ai essayé hier soir mais je n'y arrive pas, soit j'arrive à incrémenter la valeur avec +9 dans le Texte3 mais le "format nombre" affecté au champ fait perdre l'affichage des zéros à gauche, soit j'arrive à conserver les zéros mais cela ajoute le chiffre 9 à coté de la saisie effectuée dans le Texte2 (comme quand on ajoute un "S" au pluriel, c'est un caractère en plus, du style : "00019" au lieu de "0010".

J'imagine que pour un pro du JavaScript c'est de la rigolade mais moi je n'ai pas le niveau…
 :joker:

IP archivée


alex  31 mars 2011 : 18:44

Dans le script du fichier machinebillets.js, lignes 56 à 69 on a:
Numero=(indexpage-1)*UnitesParPage+indexchamp;
Marque=Numero;
 if(Numero<10000){Marque="0"+Numero;}
 if(Numero<1000){Marque="00"+Numero;}
 if(Numero<100){Marque="000"+Numero;}
 if(Numero<10){Marque="0000"+Numero;}         
NouveauNomChamp="Num"+Numero;
this.addField(NouveauNomChamp,"text",indexpage,rectangle[indexchamp]);
this.getField(NouveauNomChamp).value=Numero;
NouveauNomChampCB="Codebar"+Numero;
this.addField(NouveauNomChampCB,"text",indexpage,rectangleCB[indexchamp]);
this.getField(NouveauNomChampCB).value=Numero;
this.getField(NouveauNomChampCB).borderColor=color.transparent;
this.getField(NouveauNomChampCB).textColor=color.gray;

Il faut faire un nouveau calcul  au niveau indiqué ici en notatnt que:
-indexpage est le rang de la page (0 à this.numPages)
-indexChamp est le rang du champ dans la page (de 0 à UnitesParPage)
-Numero est le rang du ticket calculé ligne 56
Je suis passé par la variable Marque qui ajoute des 0 au numéro pour que l'on affiche toujours le numéro avec 5 digits...



Numero=(indexpage-1)*UnitesParPage+indexchamp;
Marque=Numero;
 if(Numero<10000){Marque="0"+Numero;}
 if(Numero<1000){Marque="00"+Numero;}
 if(Numero<100){Marque="000"+Numero;}
 if(Numero<10){Marque="0000"+Numero;}         
NouveauNomChamp="Num"+Numero;
this.addField(NouveauNomChamp,"text",indexpage,rectangle[indexchamp]);
//Nouveau calcul de la valeur du champs ici
ValeurDuChamp=....................;
this.getField(NouveauNomChamp).value=ValeurDuChamp;
//Fin du nouveau calcul
NouveauNomChampCB="Codebar"+Numero;
this.addField(NouveauNomChampCB,"text",indexpage,rectangleCB[indexchamp]);
this.getField(NouveauNomChampCB).value=Numero;
this.getField(NouveauNomChampCB).borderColor=color.transparent;
this.getField(NouveauNomChampCB).textColor=color.gray;

Mais je n'ai pas compris quel calcul faire.... A la session de rattrapage, peut-être?
Sur Mac, comme beaucoup de gens, je travaille avec Eclipse, parfois avec TextWrangler même si c'est un peu lourd pour le JavaScript. Je vais essayer TextMate que je ne connais pas.
Bonne soirée à tous.



IP archivée


Merlin  31 mars 2011 : 17:52

(pour les utilisateurs de Mac, surtout pas de textedit, choisir plutot un éditeur comme Fraise)

TextWrangler ou TextMate sont bien aussi.
 ;)

IP archivée


ToniOsX  31 mars 2011 : 15:34

Je veux bien essayer de bidouiller, mais je ne vois pas où dans le javascript les blocs des variables (Numero_1, Numero_2 etc) sont ?

IP archivée


alex  31 mars 2011 : 14:41

Et oui, il faut que la page MASTER soit conforme au paramétrage (nombre de tickets par page)! Je ne teste ces choses là que pour des versions professionnelles.
En ce qui concerne l'insertion de numéros calculés, il faut enter dans le script et modifier la valeur du contenu du champ en fonction de la page et du numéro de ticket. Je ne connais pas assez votre problématique pour vous aider.


IP archivée


ToniOsX  31 mars 2011 : 13:45

Bonjour,
sur Mac Os 10.6, AcrobatPro 9.4.3, je n'ai rien modifié (dans un 1er temps) au script initial, ensuite j'ai essayé de fermer la parenthèse qui me semblait ouverte, puis j'ai essayé de mettre un point/virgule, mais rien ne fait fonctionner le script.

Le plugin ? (le javascript ?). Si oui, il est installé comme indiqué précédemment, en ouvrant le paquet Acrobat puis contents/macos/javascript.

Merci.

Edit : il y a du nouveau, le script fonctionne (un peu), j'ai recopié le script dans un autre éditeur et il se lance, mais ne fait pas tout ce que je lui demande (pour les utilisateurs de Mac, surtout pas de textedit, choisir plutot un éditeur comme Fraise).
Exemple je lui demande 4 tickets par page et 8 au total, il ne me créé que les 3 premiers, puis me met un message d'erreur.

 :Euuuh:

Edit 2 : ça y est, ça fonctionne normalement, j'ai modifié la page PageMaster.pdf qui ne contenait que 3 champs à l'origine...

Reste maintenant à savoir si c'est possible (facilement ?) de rajouter des opérations mathématiques (+9 et +1) tout en reprenant la valeur du champ précédent ?

Merci en tout cas.

IP archivée


alex  31 mars 2011 : 12:29

Bonjour,
Quelle version d'Acrobat PRO utilisez-vous ?
Sur Mac ou Pc?
Avez-vous modifié le script initial ?
Le message que vous avez (trustedcreationtickets is not defined) provient du fait que le plug in n'est pas installé correctement et la fonction trustedcreationtickets ne peut être appelée.
Dans la console, on devrait voir une trace de cette installation, ici on ne voit rien.



IP archivée


ToniOsX  31 mars 2011 : 12:14

Bonjour,
je fais remonter ce fil car j'ai un travail à faire qui ressemble un peu, mais pas tout à fait.

Le client me demande de réaliser des carnets de tickets (10 par carnet) numérotés.

Pour la numérotation des tickets, pas de soucis (c'est fait avec un numéroteur en machine), mais à des fins comptables, il faut aussi que sur la couverture de chaque carnet il y ait les numéros (1 à 10, 11 à 20 etc). Donc je cherche comment faire un script (inDesign ou Acrobat) qui ajouterait +9 au premier champ, ce qui me permettrais de ne saisir que les 1ers champs,
ou mieux encore, s'il est possible de créer des nouveaux champs (mais ça je ne sait pas), à ce moment-là de rajouter +9 au 1er, puis +1 au 2ème puis +9, puis +1 etc (ce qui donnerait en mettant 1 au 1er champ, 10 au 2ème, 11 au 3ème, 20 au 4ème etc).

J'ai essayé de faire fonctionner le script de création de tickets, mais il me trouve une erreur... (parenthèse pas fermée ? J'ai essayé de la fermer mais idem, j'ai essayé de mettre un point/virgule mais idem).

Fonctions de débogage de scripts JavaScript Acrobat v.9.0
Fonctions intégrées d'Acrobat EScript v.9.0
Fonctions intégrées d'Acrobat Annotations/Collaboration v.9.0
Fonctions intégrées de l'Assistant d'Acrobat Annotations/Collaboration v.9.0
Acrobat SOAP 9.0

SyntaxError: illegal character
10:Folder-Level:App:MachineCreationTickets.js
trustedcreationtickets is not defined
2:Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:Field:Mouse UpException à la ligne 2 de la fonction top_level, script Field:Mouse Up
ReferenceError: trustedcreationtickets is not defined
2:Field:Mouse Up
trustedcreationtickets is not defined
2:AcroForm:Allez1:Annot1:MouseUp:Action1Exception à la ligne 2 de la fonction top_level, script AcroForm:Allez1:Annot1:MouseUp:Action1
ReferenceError: trustedcreationtickets is not defined
2:AcroForm:Allez1:Annot1:MouseUp:Action1

Merci.

IP archivée


alex  07 février 2011 : 20:33

Quelques remarques:
1-Les différentes occurences du champ "uniteauto" embarqueront nécessairement la même valeur, c'est la raison pour laquelle mon script crée des champs de nom différents.
2-Comme le script doit créer des pages et des champs, il doit fonctionner dans un contexte privilégié, c'est à dire au niveau de l'application Acrobat (répertoire JavaScript), ou dans un document édité avec certificat. J'ai choisi un script d'application car c'est plus simple à comprendre.
3-Un autre solution différente de celle que je propose et reprenant une (très petite) partie de votre script, serait sans doute créer un batch qui incrémenterait les numéros et lancerait une impression (à plat) de billets page par page.
4-var a = \rPage; ça c'est nouveau en JavaScript! Pour passer de la page en cours à la page suivante:
this.pageNum=this.pageNum+1;
5-Nbre de pages/Nbre de tickets:

Citer
Le must serais de créer un champs où remplir le nombre de page désiré en fonction du nombre de ticket (mais ça… je ne sais pas faire, d'où l'intérêt de ce post)
C'est ce que fait la page PageMaster.pdf.
6-Dans ma maquette, on peut sans doute changer le numéro du ticket de départ,il faudrait le mettre en paramètre dans la PageMaster.pdf
7-Pour réduire la taille d'un fichier pdf afin de le joindre à un post, c'est simple et bien expliqué sur se site.

Mon conseil: partez de ma maquette...




IP archivée


EliottDesigner  07 février 2011 : 16:16

Euh, l'exemple ne vaux pas passer… Décidemment!

IP archivée


EliottDesigner  07 février 2011 : 16:15

En fait, avant d'avoir lu ce post, je pensais travailler comme ça pour fabriquer mes ticket
Prennons l'exemple de 100 tickets agrafés en carnets, en 10 poses sur un A4 (VOIR EXEMPLE EN PJ)
La contrainte est d'avoir les n° de ticket qui se suivent les uns au dessous des autres…
Donc je pensai donner un n° de départ à chaques poses qui correspond au 10éme de la quantitée totale (10 poses pour 100 tickets)
soit 0 / 11 / 21 / 31… jusqu'à 91
et utiliser le N° de la page  aditionné à ce n°
soit :

var a = \rPage;
var b = this.getField("unite")
event.value = a.value + b.value;

là où "unite" correspond au n° de départ (0 / 11 / 21 / 31… jusqu'à 91)
Le must serais de créer un champs où remplir le nombre de page désiré en fonction du nombre de ticket (mais ça… je ne sais pas faire, d'où l'intérêt de ce post)
et de calculer automatiquement le nombre de départ (ex: soit en 10 poses : 100 (la quantitée totale)/10 = résultat :10

resultat 10 = uniteauto

var c = this.getField("uniteauto");
event.value = c.value x 2;
pour le champ 2

var c = this.getField("uniteauto");
event.value = c.value x 3;
pour le champ 3

var c = this.getField("uniteauto");
event.value = c.value x 4;
pour le champ 4


enfin voilà ou j'en suis … et là, JE RAAAAAAAAAAME!! :mur: :mur: :mur:

IP archivée


EliottDesigner  07 février 2011 : 15:16

Donc, après lecture des préférence : voilou le résultat!!!! :mur: je rame…

IP archivée


alex  04 février 2011 : 18:01

Assurez-vous du paramétrage des préférences pour l'exécution des scripts JavaScript.
Voir image jointe.

IP archivée


EliottDesigner  04 février 2011 : 17:42

C'est donc bien ce que je fait depuis le début et… ça ne marche pasjavascript:void(0); !! Je vais me pencher sur ce problème car ce script m'intéresse vraiment. En tous cas merci d'avoir répondu aussi vite…

IP archivée


alex  03 février 2011 : 12:27

Récapitulatif du mode d'emploi à suivre attentivement:
Vous devez disposer de deux fichiers .pdf dans le répertoire Billeterie et d'un script JavaScript  "MachineCreationTickets.js" au niveau de l'application Acrobat.
Il vous faut Acrobat 8 PRO minimum.
Pour créer vos billets (tickets), ici dans le cas de trois billets par page:
1-Créer un document PageMaster.pdf à partir de InDesign (maquette de 3 billets), avec 3 champs placés là où vous souhaitez voir apparaître les numéros, baptisés Numero_1,Numero_2,Numero_3.

Placez ce document dans le répertoire Billeterie, peu importe où ce répertoire a été créé. En effet , dans le script, le chemin est relatif. cPath:"PageMaster.pdf"
2-Placez le document joint "Machine à tickets.pdf" dans le répertoire Billeterie.
3-Placez le script ci-dessous "MachineCreationTickets.js" dans le répertoire JavaScript d'Acrobat.
4-Ouvrir "Machine à tickets.pdf" avec Acrobat PRO, choisir le nombre de tickets par page à l'aide du menu déroulant, puis le nombre de tickets total.
5-Presser le bouton "1-Création tickets" pour générer les pages, répondre OK à l'alerte "Tous les champs de formulaire dotés du même nom...", puis presser "2-Numérotation" pour numéroter les billets.
Voilà la maquette du PageMaster.pdf.
Placement du script dans le répertoire JavaScript d'Acrobat sur PC:
C:/Programme/Adobe/Acrobat9.0/Acrobat/Javascript
Voilà la maquette du PageMaster.
Placement du script dans le répertoire JavaScript d'Acrobat sur Mac:
Aller>Applications>Adobe Acrobat  9 Pro>Adobe Acrobat Pro.app>
Ctrl Clic > Afficher le contenu du paquet>Contents>MacOS>JavaScripts

IP archivée


EliottDesigner  03 février 2011 : 12:00

Je tombe sur ce post super intérressant… mais je n'arrive pas à la faire fonctionner cette machie à ticket!!! Où dois se trouver le répertoire "Billeterie"? Pourquoi ça ne fonctionne pas?

IP archivée


Neovw  25 mars 2010 : 16:10

Bonjour,

Je n'ai pas, à vrai dire, tout compris à ta méthode Alex, mais j'ai hâte de la tester.
J'ai pris note du script et des pdfs en lien.

Je testerai cela demain, je te tiendrai au courant quand à la progression de cette numérotation automatique. 
Merci pour ton grand dévouement à cette petite cause.  ;)

IP archivée


alex  22 mars 2010 : 10:19

Quelques remarques concernant l'exemple ci-dessus:
1-Une erreur de ma part:
Sur le document "Machine à tickets.pdf" il ne faut conserver que la première page!

2-Il est donc possible de créer à partir d'un modèle (ici une page de trois billets), une ou plusieurs copies de ce modèle dans un seul document, ou plusieurs documents contenant des paramètres variables. Ici il s'agit d'une simple numérotation. De la même manière, on peut aller chercher des données dans une table, une base de données et pré-remplir des formulaires avant de les distribuer automatiquement par email.

3-L'usage de la méthode app.trustedFunction m'a permis d'exécuter par script une fonctionnalité normalement non disponible en dehors de la console ou d'un batch.




IP archivée


alex  22 mars 2010 : 09:08

Voilà la maquette du PageMaster.pdf.
Placement du script dans le répertoire JavaScript d'Acrobat sur PC:
C:/Programme/Adobe/Acrobat9.0/Acrobat/Javascript
Voilà la maquette du PageMaster.
Placement du script dans le répertoire JavaScript d'Acrobat sur Mac:
Aller>Applications>Adobe Acrobat  9 Pro>Adobe Acrobat Pro.app>
Ctrl Clic > Afficher le contenu du paquet>Contents>MacOS>JavaScripts

IP archivée


alex  22 mars 2010 : 08:59

Pour créer vos billets (tickets), ici dans le cas de trois billets par page:
1-Créer un document PageMaster.pdf à partir de InDesign (maquette de 3 billets), avec 3 champs placés là où vous souhaitez voir apparaître les numéros, baptisés Numero_1,Numero_2,Numero_3. Placez ce document dans le répertoire Billeterie.
2-Placez le document joint "Machine à tickets.pdf" dans le répertoire Billeterie.
3-Placez le script ci-dessous "MachineCreationTickets.js" dans le répertoire JavaScript d'Acrobat.
4-Ouvrir "Machine à tickets.pdf" avec Acrobat PRO, choisir le nombre de tickets par page à l'aide du menu déroulant, puis le nombre de tickets total.
5-Presser le bouton "1-Création tickets" pour générer les pages, répondre OK à l'alerte "Tous les champs de formulaire dotés du même nom...", puis presser "2-Numérotation" pour numéroter les billets.
C'est fait.

Script "MachineCreationTickets.js":


//Script à placer dans le répertoire JavaScript de l'application Acrobat
trustedcreationtickets=app.trustedFunction(function()
{
//Calcul du nombre de pages.
NombrePages=Math.ceil(this.getField("NombreTickets").value/this.getField("UnitesParPage").value);
this.getField("NombrePages").value=NombrePages;
UnitesParPage=this.getField("UnitesParPage").value;
this.getField("Commentaires").value="Réalisé:";
onyva=app.alert("Cette action va lancer la création de "+NombrePages+" pages soit "+this.getField("NombreTickets").value+" billets.\rContinuer?",2,2);
   if(onyva==4)
   {
   indexpage=1;
      while(indexpage<=NombrePages)
      {
      app.beginPriv();
      this.insertPages({
      nPage:this.pageNum,
      cPath:"PageMaster.pdf",
      nStart:0,
      nEnd:0})
      app.endPriv();
      indexchamp=0
      this.getField("Commentaires").value=this.getField("Commentaires").value+"\rPage "+indexpage+" créée.";
      indexpage=indexpage+1;
      }
   }
})
function creationNumeros()
{
rectangle=new Array();
this.getField("NombrePages").value=NombrePages;
UnitesParPage=this.getField("UnitesParPage").value;
this.getField("Commentaires").value="Réalisé:";
onyva=app.alert("Cette action va lancer la création de "+this.getField("NombreTickets").value+" numéros de tickets.\rContinuer?",2,2);
   if(onyva==4)
   {
   indexpage=1;
      while(indexpage<this.numPages)
      {
      indexchamp=0
         while(indexchamp<UnitesParPage)
         {
         indexchamp=indexchamp+1;
            if(indexpage==1)
            {
            NomChamp="Numero_"+indexchamp;
            rectangle[indexchamp]=this.getField(NomChamp).rect;
            this.getField("Commentaires").value=this.getField("Commentaires").value+"\rPage "+indexpage+" suppression de "+NomChamp;
            this.removeField(NomChamp);
            }
         Numero=(indexpage-1)*UnitesParPage+indexchamp;
         Marque=Numero;
         if(Numero<10000){Marque="0"+Numero;}
         if(Numero<1000){Marque="00"+Numero;}
         if(Numero<100){Marque="000"+Numero;}
         if(Numero<10){Marque="0000"+Numero;}         
         NouveauNomChamp="Num"+Numero;
         this.addField(NouveauNomChamp,"text",indexpage,rectangle[indexchamp]);
         this.getField("Commentaires").value=this.getField("Commentaires").value+"\rPage "+indexpage+" Ajout de "+NouveauNomChamp;
         this.getField(NouveauNomChamp).value=Marque;
         }
      indexpage=indexpage+1;
      }
   this.getField("Commentaires").value=this.getField("Commentaires").value+"\rTerminé.";
   }
}

Vous trouverez une page "PageMaster.pdf" dans le post qui suit.
Voilà.

IP archivée


alex  21 mars 2010 : 11:01

Voilà un bon sujet, je vous répond demain.

IP archivée


Merlin  20 mars 2010 : 20:09

D'expérience, je pense surtout que dans tous les cas cela sera plus rapide avec InDesign que avec Acrobat + JavaScript = forcément plus lent qu'un programme codé "en dur".

Avec InDesign la numérotation est instantanée et la génération du PDF ne doit pas être très longue, alors qu'un Acrobat-JavaScript chargé de générer des pages va mouliner pendant un certain (long) temps !

Habituellement ce n'est pas mon genre de déconseiller l'usage d'Acrobat, mais là…

 :)

IP archivée


Neovw  20 mars 2010 : 13:06

J'ai été voir le lien... je ne suis pas sûr que l'investissement soit rentable pour cette petite association...  :doute:
Et le Javascript, je n'ai jamais mis les mains dedans.

Donc si j'ai bien compris, le mieux pour mes billets, c'est de les générer sur 250 pages pdf.
Ok.Ok.

Merci de ta réponse.

Si quelqu'un a une solution envisageable "sans frais" supplémentaire, je suis toujours preneur !

IP archivée


Merlin  20 mars 2010 : 12:56

Bonjour,

c'est possible avec le plugin Variform (version démo disponible), ou bien avec du JavaScript mais il faut le programmer.

Mais je ne suis pas certain du gain de temps et d'efforts par rapport à la solution actuelle…
Surtout que pour le copieur ça ne fera pas de différence.

--> http://www.quartet.fr/solutions_pdf/logiciels/variform.html

 :)

IP archivée


Neovw  20 mars 2010 : 12:40

Bonjour,

Je crée en ce moment des tickets de "concert" pour une association. Il y a 700 billets à imprimer environ.
La loi nous impose de mettre un numéro sur chaque billet et c'est de là que vient mon souci.
Je crée le billet sur Adobe Indesign pas de souci jusque là.
Sur ma maquette, j'utilise une liste de numéros automatiques formatée en "000X" qui à chaque fois que je crée une nouvelle page m'incrémente automatique mes numéros. J'ai 3 billets par page donc à ce rythme, je génère 250 pages et le tour est joué.  :)
La je suis dans l'obligation d'exporter un pdf de 250 pages.

Je me suis penché sur la question, et fais "un petit" tour du net, pour découvrir votre site et forum qui fait désormais parti de mes favoris.  ;)
Surement que cette demande a du déjà être faite, mais je ne l'ai pas trouvée explicitement.

Je me demande donc si il est possible à partir d'Acrobat 8 Pro (j'ai la suite complète Adobe CS3 au boulot), de générer automatiquement mes numéros de billets à partir d'une seule planche de 3 billets.

En gros j'imprime 250 fois, sur le copieur couleur, cette planche unique, et Acrobat se charge de rajouter les numéros automatiquement sur les billets aux endroits indiqués.

Y a t-il une solution via un champ de formulaire ? une fonction déjà existante dans cette version ?
Est-ce faisable tout simplement ?

Merci d'avance pour vos réponses !




IP archivée