begin process at 2012 05 30 04:01:16
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Divers

 > 

Script Indesign : redimensionner un bloc texte selon contenu et autres soucis


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Script Indesign : redimensionner un bloc texte selon contenu et autres soucis

mercredi 29 décembre 2010 à 19:12:25 | Script Indesign : redimensionner un bloc texte selon contenu et autres soucis

dewcaro

Bonjour!

Je suis occupée sur le développement de mon premier script javascript pour Indesign, et bien sûr je bloque... Donc je viens demander de l'aide!
Je dois faire un script Indesign qui ajoute le folio de chaque page au début du texte.
Pour cela :
1 - je récupère le style de paragraphe du premier paragraphe de la première zone de texte
2 - sur chaque page de mon document, j'ajoute une zone de texte dans laquelle je place le folio avec ce style de paragraphe
3 - je redimensionne mon bloc pour qu'il ne contienne que le folio (pour que le texte ne chasse pas)
4 - je chaîne le bloc folio au 1er bloc de texte (et au dernier de la page précédente si je ne suis pas sur la 1ere page).

Et voici mon code :
Code Javascript :
function AjoutFolio(){
    var myDocument=app.activeDocument

    //DEFINITION STYLE DE CARACTERE
    var myCharacterStyle = myDocument.characterStyles.item("Folio");
        //on verifie si le style existe deja
    try {
        var myName = myCharacterStyle.name;
    }
    catch (myError){
        //le style de carac n existe pas donc on le cree
       myCharacterStyle = myDocument.characterStyles.add({name:"Folio"});
    }
    //on veut mettre le folio en rouge. On verifie d abord que la couleur existe
    var myColor = myDocument.colors.item("Red");
    try {
        myName = myColor.name;
    }
     catch (myError){
        //sinon on la cree
        myColor = myDocument.colors.add({name:"Red", model:ColorModel.process,colorValue:[0,100,100,0]});
    }
        //parametrage du style.
    myCharacterStyle.appliedFont = "Myriad Pro";
    myCharacterStyle.fontStyle = "Bold";
    myCharacterStyle.pointSize = 10;
    myCharacterStyle.fillColor = myDocument.colors.item("Red");
  
  
  
  
        // DEFINITION VARIABLES PAGES
    var myStartPage = app.activeDocument.pages.firstItem;
    var myEndPage = app.activeDocument.pages.lastItem;
        //Set page numbering to absolute
    app.generalPreferences.pageNumbering = PageNumberingOptions.absolute;
    var NumFolio = myDocument.documentPreferences.startPageNumber;


        //BOUCLE DE PAGE DEBUT A PAGE FIN
   /* for(var myCounter = (myStartPage.documentOffset); myCounter < myEndPage.documentOffset; myCounter++){*/
        var myCounter=0;
        var myPage = myDocument.pages.item(myCounter);
        if(myPage.textFrames.length != 0) { //si il existe des zones de texte dans la page
            //on prend la premiere (elles sont numerote a l envers)
                var myTextFrameA=myPage.textFrames[myPage.textFrames.length-1];
                var myParagraphStyle=myTextFrameA.paragraphs[0].appliedParagraphStyle;
                
                         //ajout de la zone de texte en haut à gauche de la page 
                var myFolio = myPage.textFrames.add({geometricBounds:[20, 5, 10 , 10]});
                myFolio.parentStory.texts.item(0).applyParagraphStyle(myParagraphStyle, true); // application du meme style de para que le para suivant
                myFolio.parentStory.texts.item(0).applyCharacterStyle(myCharacterStyle); // application du style de carac
                myFolio.contents = " " + NumFolio + " "; // insertion du carac de num auto de page

                
          myFolio.resize(CoordinateSpaces.PARENT_COORDINATES, AnchorPoint.TOP_LEFT_ANCHOR, ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH, CoordinateSpaces.INNER_COORDINATES) //redimension du bloc selon contenu -> cela ne fonctionne pas
                
                    // si nous ne sommes pas sur la premiere page, nous lions le bloc folio au dernier bloc texte de la page precedente
                if (myCounter > myStartPage.documentOffset){
                    var myPreviousPage=myDocument.pages.item(myCounter--);
                        //On prend le dernier element de la page precedente
                    var myTextFrameB = myPreviousPage.textFrames[0];
                    var myParagraphStyle=myTextFrameB.paragraphs[0].appliedParagraphStyle;
                    myTextFrameB.nextTextFrame = myFolio;           
                }
                var myTextFrameA=myPage.textFrames[myPage.textFrames.length-1];
                myTextFrameA.previousTextFrame = myFolio; //lier bloc folio au suivant  

         }
        NumFolio++
   // }
}


Je n'ai pas encore testé ma boucle for qui parcourt les pages, ni la liaison de ma nouvelle zone de texte avec celle de la page précédente.

Pour l'instant, je bloque sur
- la redimension de mon bloc texte selon son contenu :
Code Javascript :
myFolio.resize(CoordinateSpaces.PARENT_COORDINATES, AnchorPoint.TOP_LEFT_ANCHOR, ResizeMethods.REPLACING_CURRENT_DIMENSIONS_WITH, CoordinateSpaces.INNER_COORDINATES);

il me ressort : "valeur incorrecte pour le paramètre 'values'. Array of Reals, ResizeConstraints enumerators or CoordinatesSpaces enumerators attendu(e), mais INNER_COORDINATES reçu". Mais INNER_COORDINATES est un CoordinatesSpaces donc je ne comprends pas...

- et la liaison entre mon nouveau bloc texte et le premier existant de la page :
Code Javascript :
myTextFrameA.previousTextFrame = myFolio; 

il me note : "Objet incorrect pour cette commande" supprime le contenu de mon bloc Folio et me le chaîne entre le 1er et le 2e bloc de la page... je comprends encore moins...
Et quelque soit l'item que je définis pour ma variable myTextFrameA...


je n'ai jamais fait de javascript donc merci de votre indulgence... et de vos conseils!
Merci d'avance pour vos pistes!
lundi 3 janvier 2011 à 12:13:10 | Re : Script Indesign : boucle parcourant les pages d'un document

dewcaro

Comme je n'arrivais pas à redimensionner mon bloc, j'ai changé de méthode : je me place au début de mon 1er bloc texte et j'ajoute mon folio avec un format de carac. Pour éviter la chasse, je pars de la fin de mon doc vers le début... Mais ma boucle ne fonctionne pas. Auriez-vous une idée?
voici mon code :
Code Javascript :
var NbMax=myDocument.pages.length-1;
var myPage = myDocument.pages[NbMax];
var myTextFrameA=myPage.textFrames[myPage.textFrames.length-1];

 //BOUCLE DE PAGE DEBUT A PAGE FIN
for(var myCounter = NbMax; myCounter >= 0; myCounter--){
 myPage = myDocument.pages[myCounter];
 if(myPage.textFrames.length != 0) { //si il existe des zones de texte dans la page
   myTextFrameA=myPage.textFrames[myPage.textFrames.length-1];
   myTextFrameA.parentStory.insertionPoints.item(0).applyCharacterStyle(myCharacterStyle);
   myTextFrameA.parentStory.insertionPoints.item(0).contents = "mon folio : "+NumFolio;
 }
 NumFolio--;
}

=> il me fait bien ma boucle et je retrouve bien les bons folios dans le bon ordre. Par contre, il m'insère tous mes folios sur la première page.

Quelqu'un aurait-il une idée?
Merci d'avance!
jeudi 6 janvier 2011 à 16:49:04 | Re : Script Indesign : redimensionner un bloc texte selon contenu et autres soucis

dewcaro

Réponse acceptée !
Résolu!!
En fait parentStory me renvoyait le texte complet, et comme mes blocs étaient chaînés...

A+


Cette discussion est classée dans : page, texte, var, bloc, folio


Répondre à ce message

Sujets en rapport avec ce message

Probleme de postionnement [ par rich25200 ] Hello,J'ai un petit prob que je n'arrive pas a resoudre !!Dans ma page, j'ai un bloc de texte que je mets dans un div en position relative avec une ce A l'aide SVP [ par OuntaMalek ] Bonjour, j'ai un problème avec le code qui fait un texte défilant sur une page.Le problème c'est que en chargeant la page je vois le texte s'afficher Extraction chiffre aléatoire dans page web [ par fdthierry ] Bonjour,Je ne suis pas sur d'être dans le bon thème, désolé...Voici ce que j'aimerai faire :Extraire via javascript une séquence de chiffre commençant Menu dépliant reste déplié [ par jpthali ] Salut à tous, merci pour ce forum "hyper réactif". J'utilise un script pour un menu déroulant qui fonctionne très bien, la page html appelle un fich Application sur template de phpBB [ par MChauban ] Je développe une application PHP/HTML/AJAX en utilisant le framework de phpbb. Ce code fonctionne sur l'environnement de dév IE7 mais pas avec les aut Prob sous IE pour script automatique [ par laubro ] Bonjourvoilà, j'ai une page en php avec du javascript/ajax qui fonctionne bien sous FF et Safari, mais sous IE j'ai un message d'erreur : Intenet expl envoyer un très long texte à PHP en utilisant l'AJAX [ par lilbrother ] Bonjour, j'aimerais posé une question sur les paramètres passer en url (la vrai question se trouve plus bas). J'ai fait un petit test : j'ai par exemp Encadrer un texte défilant [ par mobq ] Bonsoir,Pour faire défiler des news j'ai trouvé ce script qui me convient : défil. vers le haut, s'arrête au passage de la souris, accepte les liens.M texte défilant en boucle [ par SoundBoy771 ] Bonjour à tous,Je galère depuis un moment maintenant sur un petit bout de code que je n'arrive pas a faire évoluer.     var defile;    var pos Modifier zone de texte (div) depuis une page avec formulaire et login [ par phasmagun ] Bonjour. J'aimerais savoir s'il est possible de faire comme cela: [img]http://nsa12.casimages.com/img/2010/02/26/100226115134245345.jpg[/img] [i]Je


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales