InDesign CS4, bug d’assemblage

IDCS4 Elle commence à avoir un peu de bouteille cette Creative Suite 4, mais n’est toujours pas exempte de bugs.

J’ai toujours des problèmes pour sélectionner les différentes boxes des PDF lors de l’import, il faut passer par un ré-enregistrement sous Acrobat afin d’en retrouver trace dans les options lors de l’import du fichier PDF.

Dernier petit bug décelé lors de la réalisation d’une gravure en provenance de l’extérieur… les liens manquants ! Sur une soixantaine de liens utilisés dans la mise en page, plus d’une douzaine absents du dossier links réalisé à l’aide de la fonction d’assemblage, la fonction destinée à ne pas avoir de liens manquants lors du transfert d’un dossier. Un comble !

En réalisant divers essais sur ma machine de travail, je n’arrive pas à reproduire l’erreur. Pourtant c’est le 3e dossier consécutif que j’ai avec des liens manquants.
Après m’être assuré du process suivi en externe pour préparer cela, j’en déduis que c’est bien InDesign qui bug à l’assemblage, aller zou! on file googler!

Et là, jackpot ! Premier résultat sur un sujet des forums Adobe, ce n’est pas un cas isolé !
Ok, on lit, il va bien y avoir une solution autre que d’écrire un petit script d’assemblage (quoique, ça fait longtemps que je n’avais rien écrit… ;) ).
Premières constations, Adobe a publier une mise à jour 6.0.2 qui corrigerait le bug… ah ben non, 3 réponses plus bas, il y a toujours des constats d’erreur d’assemblage ! Arg !
Bon, on continue de lire (mais par la fin cette fois), et là c’est gagné (comme dirait notre amie Dora), la mise à jour 6.0.3 semble bien avoir éliminé ce problème.

Après vérification, suis-je à jour: oui, je mets toujours mes applications à jour, ma seule mauvaise surprise ayant été la mise à jour Java sur Mac OS X.5 qui m’a plombé toutes les préférences des applications, sinon que des bonnes surprises.
Par contre, en externe, c’était toujours la version du DVD qui était utilisée… oups ! Après mise à jour, l’assemblage s’est déroulé correctement.

Morale: toujours penser à mettre à jour ses logiciels de travail !
Enfin lorsque c’est possible, ça me fait penser à une histoire de Silverlight….

InDesign Story

Pour les lecteurs du billets concernant Tiddlywiki, c’est peut être du réchaffé si ces derniers ont poussé à lire le TW de l’article, sinon tant pis, et de toutes façons il n’y a pas de lien direct, ici il s’agit de modifier la langue utilisée par le logiciel.

Sous QuarkXPress, j’ai longtemps réceptionné des documents en provenance d’outre-Rhin qu’il nous fallait traduire en français. Un des problèmes était que de base le logiciel utilisait la langue d’origine du document comme référence de dictionnaire de césure. Bien que la méthode de mise à jour des styles eut été une solution propre, elle n’a été que vaguement envisagé, les styles étaient bien utilisés, mais variaient d’une parution à l’autre, voir même document à l’autre. Il fallait donc plus radical et efficace.
Facile ! A l’aide d’une bibliothèque on glisse un petit bloc texte type dans la maquette. Ce bloc texte ayant, bien entendu, épuré de tout style afin de ne pas encombrer le document de travail, et bien sur, la langue du paragraphe contenu réglée sur celle de destination (ici français pour ceux qui ne suivent déjà plus!). Il n’y a plus qu’à effectuer un Enregistrer sous et activer la langue unique pour modifier tout le document dans la langue désirée.

Sous InDesign, j’ai bien cherché, mais je n’ai rien trouvé! Soit! Une occasion de plus jouer avec des scripts. En plus cette fois, les fichiers proviennent d’outre-Manche, c’est pas gagné pour leur faire comprendre que le texte français qu’ils maquettent doit utiliser des règles de césures issues d’un dictionnaire français! Ici pas d’option autre que mot par mot, paragraphe par paragraphe, style par style ou même bloc par bloc.

J’ai profité de ce petit contre-temps pour aller une fois de plus du côté de chez Swann, puis du Javascript pour approfondir encore un peu mes expériences.
L’option choisie est de laisser le choix du champ d’application des modification:

  • tous les styles de paragraphes
  • tous les styles de caractères
  • tous les paragraphes

Ce découpage permettant de voir un peu les différents côtés identiques (sic!) de l’application d’une langue dans InDesign via des scripts. L’ordre me parait également logique dans un esprit de nettoyage logique du texte les styles avant les paragraphes afin de préserver les liens de style au maximum en cas de modification à venir.

Première étape, une fenêtre dialogue permettant le choix du champ d’application, si un document est ouvert:

function main(){
  if(app.documents.length != 0){
      var myDialog = app.dialogs.add({name:"Conversion langue FRANCAIS"});
      with(myDialog.dialogColumns.add()){
        staticTexts.add({staticLabel:"Appliquer aux éléments:"});
        var sP = checkboxControls.add({staticLabel:"Style de paragraphe", checkedState:true});
        var sC = checkboxControls.add({staticLabel:"Style de caractères", checkedState:true});
        var aP = checkboxControls.add({staticLabel:"Tous les paragraphes", checkedState:true});
      }

Seconde étape, on effectue les changements sur les items désirés en se basant sur l’état des checkbox précédents:

if(myDialog.show() == true){
        var sP, sC, aP;
        if(sP.checkedState == true){
          for(myCounter = 1; myCounter < app.activeDocument.paragraphStyles.length; myCounter++){
          app.activeDocument.paragraphStyles.item(myCounter).appliedLanguage = app.languagesWithVendors.item("French");
        }}
        if(sC.checkedState == true){
          for(myCounter = 1; myCounter < app.activeDocument.characterStyles.length; myCounter++){
          app.activeDocument.characterStyles.item(myCounter).appliedLanguage = app.languagesWithVendors.item("French");
        }}
        if(aP.checkedState == true){
          for(myCounter = 0; myCounter < app.activeDocument.stories.length; myCounter++){
          app.activeDocument.stories.item(myCounter).appliedLanguage = app.languagesWithVendors.item("French");
      }}

Et pour finir, on n’oublie pas de détruire la fenêtre de dialogue, sinon avec le temps InDesign va un peu craquer!

myDialog.destroy();

Au final, le script complet permettant de convertir un document en français est le suivant:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function main(){
  if(app.documents.length != 0){
      var myDialog = app.dialogs.add({name:"Conversion langue FRANCAIS"});
      with(myDialog.dialogColumns.add()){
        staticTexts.add({staticLabel:"Appliquer aux éléments:"});
        var sP = checkboxControls.add({staticLabel:"Style de paragraphe", checkedState:true});
        var sC = checkboxControls.add({staticLabel:"Style de caractères", checkedState:true});
        var aP = checkboxControls.add({staticLabel:"Tous les paragraphes", checkedState:true});
      }
      if(myDialog.show() == true){
        var sP, sC, aP;
        if(sP.checkedState == true){
          for(myCounter = 1; myCounter < app.activeDocument.paragraphStyles.length; myCounter++){
          app.activeDocument.paragraphStyles.item(myCounter).appliedLanguage = app.languagesWithVendors.item("French");
        }}
        if(sC.checkedState == true){
          for(myCounter = 1; myCounter < app.activeDocument.characterStyles.length; myCounter++){
          app.activeDocument.characterStyles.item(myCounter).appliedLanguage = app.languagesWithVendors.item("French");
        }}
        if(aP.checkedState == true){
          for(myCounter = 0; myCounter < app.activeDocument.stories.length; myCounter++){
          app.activeDocument.stories.item(myCounter).appliedLanguage = app.languagesWithVendors.item("French");
      }}
    }
  myDialog.destroy();
  }
  else{
    alert("Merci d'ouvrir un document.");
  }
}

A venir, quand j’en trouverais la motivation et/ou l’utilisation, un script plus générique allant puiser la liste des langues disponibles, et proposer un changement dans la langue du logiciel après récupérer cette dernière.