Script 4.12 : Conversion PDF multipage en plusieurs fichiers Illustrator
Transcription
Script 4.12 : Conversion PDF multipage en plusieurs fichiers Illustrator
AIC04.12_FRQA 21/1/03 12:22 PM Page 1 L'impossibilité d'ouvrir dans Illustrator 10 plus d'une page de fichier PDF à la fois est source de frustration pour nombre d'entre nous. Ceux d'entre vous qui travaillent périodiquement avec des fichiers PDF multipages sont sans aucun doute confrontés à cette limitation de l'application. Je ne peux qu'imaginer comment vous êtes parvenu à contourner cet obstacle. Vous avez peut-être l'air très concentré tandis que vous passez en pilote automatique, ouvrez le fichier à partir de la barre de menus (voir la figure 4.34), puis choisissez le numéro de la page dans la boîte de dialogue qui s'affiche dans Illustrator lors de l'ouverture d'un fichier PDF multipage (voir la figure 4.35). Vous devrez ensuite choisir Fichier > Enregistrer sous, puis le nom du fichier Illustrator à créer qui contiendra la page active du fichier PDF. Vous répéterez enfin cette procédure pour toutes les autres pages du fichier. Ça se passe de commentaire ! Script 4.12 prend la relève une fois que vous avez ouvert une page du fichier PDF dans Illustrator, comme illustré à la figure 4.36. Une fois qu'il a détecté l'emplacement du fichier PDF sur votre disque dur, Script 4.12 exécute automatiquement toutes les étapes énoncées au paragraphe précédent. L'exécution de scripts simplifie réellement votre travail. La figure 4.37 montre les résultats de votre script après l'enregistrement d'un fichier Illustrator pour chacune des trois pages du fichier PDF pilote. CONSEIL Pour créer le projet Visual Basic de mise en route pour ce script, suivez la procédure décrite pour Script 4.2 à la figure 4.4. Figure 4.34 Sélectionnez le fichier PDF à ouvrir avant l'exécution du script. Dans votre exemple, la boîte de dialogue Ouvrir illustre le fichier PDF que vous vous apprêtez à ouvrir. 4 : INSTRUCTIONS DE SCRIPTS POUR ILLUSTRATOR : SCRIPT 4.12 : CONVERSION PDF MULTIPAGE EN PLUSIEURS FICHIERS ILLUSTRATOR Script 4.12 : Conversion PDF multipage en plusieurs fichiers Illustrator 1 AIC04.12_FRQA 21/1/03 12:22 PM Page 2 Figure 4.35 Illustrator (sur Mac OS) n'ouvre qu'une seule page d'un fichier PDF à la fois. Cette boîte de dialogue qui s'affiche à chaque fois qu'un utilisateur tente d'ouvrir un fichier PDF multipage dans Illustrator permet d'indiquer la page à ouvrir. Votre script ignore cette boîte de dialogue. EXÉCUTION DE SCRIPTS ADOBE ILLUSTRATOR Figure 4.36 Page 1 du fichier PDF pilote utilisé (document Lisez-moi Illustrator au format PDF), illustré dans Illustrator. 2 Figure 4.37 Une fois le script exécuté, le dossier d'origine du fichier PDF contient un fichier Illustrator distinct regroupant chacune des pages PDF. Le cas échéant, trois documents correspondent aux trois pages du fichier PDF d'origine. AIC04.12_FRQA 21/1/03 12:22 PM Page 3 AppleScript La partie principale du script constitue une boucle repeat contenue dans une instruction try. Le nombre de pages du fichier PDF étant indéterminé, la boucle place les numéros 1 à 1000 de manière séquentielle dans la variable myPage. Le script tente d'ouvrir le fichier PDF avec le nombre de pages actuellement spécifié dans la boucle. Lorsque la variable myPage dépasse le nombre réel de pages du fichier PDF, Illustrator génère une erreur, laquelle déclenche l'instruction try et déplace l'exécution du script à la ligne qui suit l'instruction end try. Enfin, le script rétablit l'interaction de l'utilisateur au niveau qui était défini avant son exécution. AppleScript tell application “Adobe Illustrator 10” if (count of documents) > 0 then C'est ici qu'est enregistré puis modifié le niveau d'interaction de l'utilisateur pour Illustrator. set myInteractLevel to user interaction level set user interaction level to never interact set myPath to file path of document 1 as string if myPath ends with “.pdf” then try repeat with myPage from 1 to 1000 open alias myPath with options {page:myPage} set myNewPath to myPath La boucle repeat principale tente d'ouvrir chacune des pages du fichier PDF, jusqu'à la 1000e. repeat with myCharNum from (count of characters of myNewPath) to 1 by -1 if character myCharNum of myNewPath = “.” then if myCharNum > (count of characters of myNewPath) - 5 then set myNewPath to (text of characters 1 thru (myCharNum - 1) of myNewPath) as string exit repeat end if end repeat 4 : INSTRUCTIONS DE SCRIPTS POUR ILLUSTRATOR : SCRIPT 4.12 : CONVERSION PDF MULTIPAGE EN PLUSIEURS FICHIERS ILLUSTRATOR Conseils sur le script Ce script débute par une série d'étapes préparatoires telles que la confirmation de l'existence d'au moins un document ouvert dans Illustrator. L'actuelle propriété décrivant le niveau d'interaction de l'utilisateur de l'application Illustrator est ensuite stockée dans une variable, ce qui permettra de la restaurer ultérieurement. C'est alors que le niveau d'interaction est modifié pour éviter que les boîtes de dialogue n'apparaissent lors de l'ouverture par le script des diverses pages du document PDF. Le script détermine le chemin d'accès complet vers le document Illustrator de premier plan et confirme son type de fichier (PDF) en cochant l'extension de fichier correspondante. 3 AIC04.12_FRQA 21/1/03 12:22 PM Page 4 set myNewPath to myNewPath & myPage & “.ai” AS, suite. save document 1 in file myNewPath as Illustrator close document 1 saving no end repeat end try end if set user interaction level to myInteractLevel end if end tell Visual Basic EXÉCUTION DE SCRIPTS ADOBE ILLUSTRATOR Conseils sur le script Ce sous-programe Command1_Click() débute par une série d'étapes préparatoires telles que la déclaration des variables et la confirmation de l'existence d'un document ouvert dans Illustrator. L'actuelle propriété décrivant le niveau d'interaction de l'utilisateur de l'application Illustrator est ensuite stockée dans une variable, ce qui permettra de la restaurer ultérieurement. C'est alors que le niveau d'interaction est modifié pour éviter que les boîtes de dialogue n'apparaissent lors de l'ouverture par le script des diverses pages du document PDF. Le script détermine le chemin d'accès complet vers le document Illustrator de premier plan et confirme son type de fichier (PDF) en cochant l'extension de fichier correspondante. 4 La partie principale de ce script constitue une boucle For...Next qui suit une instruction On Error GoTo. L'instruction On Error instruit le script de passer à l'étiquette AllDone dans le script en cas d'erreur. Cette technique de gestion des erreurs joue en votre faveur puisque le nombre de pages du fichier PDF est indéterminé ; la boucle place ainsi les numéros 1 à 1000 de manière séquentielle dans la variable myPage. Le script tente alors d'ouvrir le fichier PDF avec le nombre de pages actuellement spécifié dans la boucle. Lorsque la variable myPage dépasse le nombre réel de pages du fichier PDF, Illustrator génère une erreur, laquelle déclenche l'instruction On Error GoTo et déplace l'exécution du script à la ligne qui suit l'étiquette AllDone. AIC04.12_FRQA 21/1/03 VBScript 12:22 PM Page 5 Option Explicit Dim myApp As New Illustrator.Application Dim myPDFOptions As New Illustrator.PDFOpenOptions Dim myInteractLevel, myPath, myPage, myNewPath If myApp.Documents.Count > 0 Then Le script détermine ici le chemin d'accès complet vers le document Illustrator de premier plan et confirme son type de fichier (PDF) en cochant l'extension de fichier correspondante. myInteractLevel = myApp.UserInteractionLevel myApp.UserInteractionLevel = aiDontDisplayAlerts myPath = myApp.Documents(1).FullName If Right(myPath, 4) = “.pdf” Then On Error GoTo AllDone For myPage = 1 To 1000 myPDFOptions.PageToOpen = myPage myApp.Open myPath, , myPDFOptions myNewPath = myPath La boucle principale tente d'ouvrir chacune des pages du fichier PDF, jusqu'à la 1000e. If InStrRev(myPath, “.”) > Len(myPath) - 5 Then myNewPath = Mid(myPath, 1, InStrRev(myPath, “.”) - 1) End If myNewPath = myNewPath & myPage & “.ai” myApp.Documents(1).SaveAs myNewPath myApp.Documents(1).Close (aiDoNotSaveChanges) Next AllDone: C'est ici qu'est rétabli le niveau d'interaction de l'utilisateur d'Illustrator tel qu'il était avant l'exécution du script. End If myApp.UserInteractionLevel = myInteractLevel End If End Sub 4 : INSTRUCTIONS DE SCRIPTS POUR ILLUSTRATOR : SCRIPT 4.12 : CONVERSION PDF MULTIPAGE EN PLUSIEURS FICHIERS ILLUSTRATOR Private Sub Command1_Click() 5