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!
