Script import multiples images dans InDesign |
Bienvenue invité ( Connexion | Inscription )
Script import multiples images dans InDesign |
17 Nov 2014, 19:09
Message
#1
|
|
Macbidouilleur de vermeil ! Groupe : Membres Messages : 1 017 Inscrit : 31 Jan 2006 Lieu : Paris Membre no 54 697 |
Bonjour,
Je cherche à créer un modèle de page pour importer automatiquement toutes les images d'un dossier dans une page InDesign. Il existe de nombreux scripts qui permettent de générer un catalogue à partir d'un dossier, mais il génère eux-mêmes les blocs. Dans mon cas, j'ai besoin de dire que la première image du dossier va dans tel bloc, la deuxième dans tel autre bloc, etc. J'aurais bien sûr préalablement créé un gabarit avec mes divers blocs (image1, image 2, etc.) En utilisant la méthode des fusions de données, j'arrive à quelque chose de pas mal — voir cette page http://indesignsecrets.com/creating-a-cont...in-indesign.php Le principe est de générer un fichier CSV avec toutes les images d'un dossier (avec un colonne nom et une colonne avec le chemin de chaque image). InDesign peut importer les images correspondantes, mais il fait un catalogue d'image en créant lui-même les blocs. Pour créer le CSV, ils utilisent ce script : CODE Array.prototype.inArray = function(obj){ var arrMax = this.length-1; for(var i=arrMax; i>=0; i--){ if(this[i]===obj){ return true; } } return false; } var csvParser = (function(){ var csvFile; return{ create:function(fo){ csvFile=File(fo+"/"+fo.name+".csv"); }, write:function(csvContent){ csvFile.open('w'); csvFile.encoding="UTF-8"; csvFile.write(csvContent); csvFile.close(); }, execute:function(){ csvFile.execute(); }, getCSV:function(){ return csvFile; } } })(); function imagesToCSVthenChoose(){ var doc, fo, fis, fiMax, fi, fiName, fiPath, imgFormats=["eps","jpg","tif","psd","pdf","png","ai","bmp","jpeg"], imgFormatMax = imgFormats.length-1, imgOk = [], csvContent = [], ext, csvLine=[], csvSep=","; if(app.documents.length==0){ alert("No documents open !"); return } doc=app.activeDocument; fo = Folder.selectDialog("Please choose a folder with images"); if(!fo) return fis = fo.getFiles(); fiMax=fis.length; for(var i=0; i<fiMax; i++){ fi=fis[i]; ext = fi.name.match(/\.([a-z]+)$/i); if(ext==null) continue; ext = ext[1].toLowerCase(); if(!imgFormats.inArray(ext)) continue; fiName = decodeURI(fi.name); fiPath=decodeURI(fi.fsName); csvContent.push(fiName+csvSep+fiPath); } csvContent = "Name"+csvSep+"@images\r"+csvContent.join("\r"); csvParser.create(fo); csvParser.write(csvContent); /* doc.dataMergeProperties.selectDataSource(csvParser.getCSV()); var myMenuAction = app.menuActions.item("$ID/DataMergePanelName"); myMenuAction.invoke(); */ } imagesToCSVthenChoose(); C'est lui qui créé la liste CSV. Je n'y connais rien en script, alors je n'arrive pas à le modifier pour que le CSV généré ne soit pas : CODE name,@images mais plutôt : CODE nameimage1,@image1,nameimage2,@image2,nameimage3,@image3,etc. A partir d'un tel CSV, grâce à la fonction Fusion de données, je saurais importer l'image 1 dans le bloc 1 de mon gabarit, l'image 2 dans le bloc 2, etc. Quelqu'un pourrait me donner ce petit coup de main ? Merci d'avance, Beren PS : si la méthode ne vous semble pas appropriée, faut pas hésiter à me le dire si vous en connaissez une tout autre. Ce message a été modifié par Beren - 17 Nov 2014, 19:11. |
|
|
21 Nov 2014, 15:36
Message
#2
|
|
Macbidouilleur d'Or ! Groupe : Membres Messages : 2 045 Inscrit : 22 Apr 2008 Lieu : 43.93 N / 4.84 E Membre no 112 856 |
Bonjour,
Pour modifier la structure du CSV on peut utiliser le rechercher-remplacer de InDesign, ou le rechercher-remplacer de son éditeur de texte préféré. Ce script (gratuit) qui étend la fonction de fusion de données devrait certainement t'intéresser : http://indesignsecrets.com/data-merge-into...-in-a-story.php Ce message a été modifié par magicPDF - 21 Nov 2014, 15:40. -------------------- Acrobate du PDF, InDesigner, Photoshopographe et WordPresseur
abracadabraPDF.net |
|
|
Nous sommes le : 26th April 2024 - 05:57 |