Donnez vie à vos documents numériques !
 

Pages modèles et… spawn qui peut

abracadabraPDF Forums PDF – Général Pages modèles et… spawn qui peut

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45579
    passifacile
    Participant

    Dans un post précédent et dans des échanges avec Merlin, le sujet des pages modèles (Template) a été abordé.

    Je voudrais maintenant intégrer cette fonctionnalité dans un fichier, mais en “spawnant”  :geek: les pages dans un ordre bien précis. A l’inverse, je devrais également créer un script qui permettra d’effacer des pages précises.

    Pour cela, j’ai esquissé un script pour rechercher un emplacement précis et l’ai décliné pour les effacements. Malheureusement, mes compétences en matière de programmation étant très limitées, il me manque des éléments pour “traduire” les expressions des actions attentues et je souhaiterais connaître l’avis de nos experts sur la méthode.

    Info : je pense créer un champ (lecture seule) par page-modèle (contrat_001, contrat_002 etc.) qui contiendront la valeur de leur suffixe (1, 2 etc.)

    Voici le brouillon des scripts en question :

    INSERTION de templates

    var depart = this.pageNum
    var pagetocheck = 3 // les pages 0, 1 et 2 sont des introductions
    var bingo = 0 // flag pour identifier l’emplacement où insérer la page-modèle

    var a = this.getTemplate(“1”) // page 1 d’un contrat de 4 pages
    var b = this.getTemplate(“2″) // page 2 ”  ”  “
    var c = this.getTemplate(“3″) // page 3 ”  ”  “
    var d = this.getTemplate(“4″) // page 4 ”  ”  “
    var e = 4 // correspond au numéro du dernier template d’un contrat
                      et à la valeur du champ « contrat » recherchée

    tant que bingo = 0
    this.pageNum = pagetocheck

    var verif = this.getField(“contrat”)[de this.pageNum].value

    if verif > d // la dernière page « fixe » et inamovible du document comportera un champ
                        « contrat » avec une valeur supérieure à tous les templates. Il n’y aura
                        donc par le risque de ne pas trouver une valeur supérieure.
                    bingo=1
                    d.spawn({nPage:(pagetocheck-1), brename :false, bOverlay :false}) ;
                    c.spawn({nPage:(pagetocheck-1), brename :false, bOverlay :false}) ;
                    b.spawn({nPage:(pagetocheck-1), brename :false, bOverlay :false}) ;
                    a.spawn({nPage:(pagetocheck-1), brename :false, bOverlay :false}) ;

                    exit

                    this.pageNum = depart
    else
    pagetocheck = pagetocheck+1
    loop 
    ________________________________________
    ________________________________________
    EFFACEMENT de pages

    var depart = this.pageNum
    var pagetocheck = 3 /car 3 pages fixes de présentation
    var bingo = 0

    var a = 1 // valeur du champ « contrat » à trouver

    tant que bingo = 0
    this.pageNum = pagetocheck

    var verif = this.getField(“contrat”)[de this.pageNum].value

    if verif =a
                    bingo=1
    this.deletePages({nStart: this.pageNum, nEnd: (this.pageNum+8)}); //effacement de 8 pages
                    this.pageNum = depart
                    exit
    else
    pagetocheck = pagetocheck+1
    loop

    C’est un peu long, mais je ne savais pas comment être clair (peut-être ne le suis-je pas…  :Smiley11:)

    Et peut-être qu’il y a une solution bien plus simple.

    Bon courage pour la lecture  :Smiley08:

    Cordialement

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

    Bonjour.

    Est-ce que les champs sont renommés lors du spawn ?
    Quel est l’évènement utilisateur qui décide de l’affichage/masquage des pages ?

    #62099
    passifacile
    Participant

    Bonjour,

    Non, les champs ne seront pas renommés. Le fichier est à usage unique. Un document vierge est en permanence downloadable pour le traitement d’une nouvelle affaire. Les utilisateurs utilisent Adobe Reader.

    Les événements déclencheurs seront des scripts placés dans des boutons (souris relevée) ou dans des cases  cocher (si active).

    L’affichage ou le masquage des pages ne devra(it) pas provoquer de message d’alerte ou de confirmation.

    #62100
    bebarth
    Maître des clés

    bonjour,
    Ci-joint un fichier qui je l’espère correspond à ce que tu désirait !
    Au pire, tu pourras peut-être t’en inspirer.
    @+
    :bonjour:

    #62101
    passifacile
    Participant

    Bonjour, Bebarth.

    Ça m’a l’air d’enfer !
    :extra:

    Je n’ai que le Reader à disposition, pour l’instant : je suis impatient de regarder avec le PRO, ce soir, ton travail  dans le détail :Smiley08:

    Merci infiniment.

    Bonne journée.

    #62102
    Merlin
    Maître des clés

    les champs ne seront pas renommés.

    Dans ce cas j’utilise l’astuce suivante : plutôt que de me prendre la tête pour savoir où insérer de nouvelles pages, je supprime d’abord toutes les pages (sauf la 1re) et je re-génère toutes les pages nécessaires dans l’ordre.
    :Smiley03:

    #62103
    passifacile
    Participant

    Je vais avoir plusieurs centaines de modèles… et, dans ce cas, pour éviter que ça ne mouline trop (selon de précédents conseils judicieux d’un certain Merlin  :Smiley01:), il était préférable, dans le cas d’espèce, de rechercher les bons emplacements pour les insertions.

    Cordialement,

    #62104
    Merlin
    Maître des clés

    Je vais avoir plusieurs centaines de modèles

    Ah ben oui, alors là non !  :geek:

    Ça risquerait effectivement de mouliner un peu…

    #62105
    bebarth
    Maître des clés

    Dans la proposition précédente, on appelait la page modèle selon son ordre, ce qui était peut-être contraignant.
    Dans cette nouvelle version, on l’appelle via son nom, ce qui permet d’être plus souple sur l’ordre de création des pages modèles.
    @+
    :bonjour:

    #62106
    passifacile
    Participant

    Bonjour, Bebarth.

    Je n’arrive pas à adapter les informations reçues et mon brouillon de “script” pour faire en sorte de choisir l’emplacement où insérer les pages.

    Les éléments déclencheurs seront placés non pas sur une page au bon emplacement, mais sur l’une des 3 premières pages, voire sur des scripts dans des boutons placés dans diverses pages.

    Par conséquent, en fonction des divers choix de l’utilisateur, il y aura plusieurs contrats qui se suivront, et des insertions / effacements réguliers parmi tous ces contrats.

    C’est la raison pour laquelle je dois rechercher, dans les documents affichés, le premier dont l’ordre hiérarchique est supérieur à celui du document à insérer. Ou, pour les effacements, le numéro de page de la première page du contrat à effacer.

    J’ai tenté de décrire le processus en écrivant le script de mon premier message avec des termes en français, ne sachant pas les convertir en javascript…

    Saurais-tu marcher sur l’eau faire un miracle en partant de mon brouillon  :priere:  ?

    Cordialement.

    #62107
    Merlin
    Maître des clés

    Saurais-tu marcher sur l’eau faire un miracle en partant de mon brouillon ?

    Poste toujours…
    À plusieurs c’est toujours plus facile.
    :Smiley15:

    #62108
    bebarth
    Maître des clés

    bonjour,
    Ce serait effectivement plus clair avec un fichier où les pages à insérer/supprimer seraient à leurs éventuelles places dans le document, ainsi que les boutons déclencheurs…
    @+
    :bonjour:

    #62109
    passifacile
    Participant

    …que voilou…en annexe  :Smiley08:

    Bonjour.

    La force brute étant bien plus simple à gérer**, je vais en parallèle tenter une transformation de mon document en “Templates” et faire le meunier (évaluer le temps de moulinage)  :Smiley03:

    ** Une des difficultés est l’ajout de nouveaux contrats par la suite (dont l’emplacement logique ne peut pas être connu à l’avance).

    Cordialement,

    #62110
    bebarth
    Maître des clés

    bonjour,
    Voici une proposition. Il y a un script d’ouverture de page qui recalcule la position de chaque début de contrat lorsque l’on ouvre cette page.
    Les nombres de pages des contrats sont en script de document.
    Je n’ai pas compris l’histoire des “Emplacement_999” !
    @+
    :bonjour:

    #62111
    passifacile
    Participant

    :extra: :Smiley08:

    Bonsoir, et merci beaucoup : je vais essayer d’adapter le processus à mon document.

    “Emplacement_999″…..
    J’avais imaginé que pour retrouver les bonnes pages où insérer les templates il était nécessaire de placer sur chaque page un champ unique (Emplacement_001, Emplacement_002 etc.). En fait, le nom de modèle répond à la problématique.

    Bonne soirée.

    #62112
    passifacile
    Participant

    Bonsoir.

    La création de nombreuses pages modèles est fastidieuse (sélection de la page, ouverture de l’interface, nommage, fermeture de l’interface etc…….), et plus il y en a, plus l’interface des pages modèles hoquette et ralenti…

    Pour tenter d’éviter ces ralentissements, j’ai essayé de créer des fichiers parallèles contenant des pages modèles mais la fusion ou l’importation de documents fait disparaître les pages-modèles contenues dans le document importé.

    Y a-t-il moyen de créer automatiquement, par script, des pages modèles (balayage des pages d’un fichier et création pour chacune d’un template (MonTemplate1, MonTemplate2, MonTemplate3 etc.)

    #62113
    Merlin
    Maître des clés

    Oui, c’est d’autant plus galère avec l’interface d’Acrobat qui ne permet même pas d’utiliser la touche Entrée ou Retour pour valider, il faut tout faire à la souris.

    Heureusement qu’il y a JavaScript !  :Smiley03:


    // Enregistre toutes les pages comme Templates et les masque, sauf page 1
    // Remplacer les deux “1” par des “2” pour garder les deux premières pages, etc.
    // On peut modifier le nom du modèle (“page” ci-dessous)
    // Script de batch ou de Console uniquement
    //
    numNewTemplates = this.numPages – 1;
    for ( var i = 0; i < numNewTemplates; i++) {
    var t = this.createTemplate({cName:”page“+i, nPage:1});
    t.hidden = true;
    }
    //

    #62114
    Merlin
    Maître des clés

    L’inconvénient c’est qu’avec ce script le compte commence à 1 (sans zéro directeur à gauche) et qu’ensuite les templates sont classés par ordre alphabétique :

    page1
    page10
    page11
    page12

    page19
    page2
    page20
    page21
    etc.  :oh:

    Si quelqu’un savait y mettre un zéro directeur à gauche des neuf premiers chiffres je serais preneur.  :Smiley15:

    #62115
    Merlin
    Maître des clés

    Bon, ben du coup je me suis creusé les méninges 2 minutes et voilà le même script avec un zéro directeur à gauche des 9 premiers chiffres.
    :geek:

    //
    numNewTemplates = this.numPages – 1;
    for (var i = 0; i < numNewTemplates; i++) {
    if (i < 10) {i = "0" + i;}
    var t = this.createTemplate({cName:”page”+i, nPage:1});
    t.hidden = true;
    }
    //

    #62116
    passifacile
    Participant

    :bravo: :extra: :extra: :extra: :extra:
    9 minutes pour créer 460 pages “Template”
    + premier apprentissage de la console  :Ooops:
    + lecture du tuto sur la console  :extra:
    = voilà une journée qui commence très bien !

    Merci Merlin et bonne journée.

    #62117
    Merlin
    Maître des clés

    L’intérêt du zéro directeur c’est que ça permet d’utiliser JavaScript pour ensuite afficher/masquer les templates dans l’ordre.
    Sinon, avec JavaScript et sans les zéros ça mélange l’ordre des pages.
    :idee:

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