// Script JSX pour Photoshop : Création de fonds perdus avec repères verrouillés // Copyright © 2024 Sébastien VTL // License : 2024 // Version : 3.0 // Date : 2024-02-20 // Description : Créer des fonds perdus avec repères verrouillés #target photoshop // Fonction principale function createBleed() { try { // Vérifier si les unités du document sont en millimètres ou centimètres if (app.preferences.rulerUnits !== Units.MM && app.preferences.rulerUnits !== Units.CM) { throw new Error("La configuration du document doit être en millimètres ou centimètres. Veuillez changer les unités avant d'exécuter ce script."); } // Créer une fenêtre de dialogue pour la sélection des dimensions et des options var settings = showSettingsDialog(); if (!settings) return; // Si annulé, sortir // Obtenir la résolution du document actuel if (app.documents.length === 0) { throw new Error("Aucun document ouvert. Veuillez ouvrir un document pour exécuter ce script."); } var doc = app.activeDocument; var dpi = doc.resolution; // Résolution du document en DPI (pixels par pouce) var mmToPixels = function(mm) { return (mm / 25.4) * dpi; }; // Conversion mm -> pixels var cmToPixels = function(cm) { return (cm * 10) / 25.4 * dpi; }; // Conversion cm -> pixels // Calculer les dimensions en pixels en fonction des unités var bleedPixels, safeZonePixels; if (app.preferences.rulerUnits === Units.MM) { bleedPixels = mmToPixels(settings.bleedSize); safeZonePixels = mmToPixels(settings.safeZoneSize); } else if (app.preferences.rulerUnits === Units.CM) { bleedPixels = cmToPixels(settings.bleedSize / 10); safeZonePixels = cmToPixels(settings.safeZoneSize / 10); } // Ajuster le plan de travail resizeCanvasWithBleed(doc, bleedPixels); // Ajouter et verrouiller les repères addGuidesAndLock(doc, bleedPixels, safeZonePixels, doc.width, doc.height, settings.addCenterGuides); alert("Plan de travail ajusté et repères verrouillés avec les dimensions suivantes :\n" + "- Fond perdu : " + (settings.bleedSize * 10) + " mm\n" + "- Zone de protection : " + (settings.safeZoneSize * 10) + " mm\n" + (settings.addCenterGuides ? "- Repères centraux ajoutés\n" : "") + "\nVersion 3.0" + "\nScript Créé par Sébastien VTL."); } catch (e) { alert("Erreur : " + e.message); } } // Fonction pour afficher le menu de sélection avec option pour les repères centraux function showSettingsDialog() { var dialog = new Window("dialog", "Paramètres de réglages"); dialog.orientation = "column"; // Section pour le fond perdu var bleedGroup = dialog.add("group"); bleedGroup.add("statictext", undefined, "Fond perdu (en mm) :"); var bleedDropdown = bleedGroup.add("dropdownlist", undefined, ["3", "4", "5"]); bleedDropdown.selection = 0; // Section pour la zone de protection var safeZoneGroup = dialog.add("group"); safeZoneGroup.add("statictext", undefined, "Zone de protection (en mm) :"); var safeZoneDropdown = safeZoneGroup.add("dropdownlist", undefined, ["3", "4", "5"]); safeZoneDropdown.selection = 0; // Option pour ajouter des repères centraux var centerGuideGroup = dialog.add("group"); centerGuideGroup.add("checkbox", undefined, "Option repère centre document"); var centerGuideCheckbox = centerGuideGroup.children[0]; centerGuideCheckbox.value = false; // Désactivé par défaut // Boutons OK et Annuler var buttonGroup = dialog.add("group"); buttonGroup.alignment = "center"; var okButton = buttonGroup.add("button", undefined, "OK"); var cancelButton = buttonGroup.add("button", undefined, "Annuler"); cancelButton.onClick = function () { dialog.close(0); }; okButton.onClick = function () { dialog.close(1); }; if (dialog.show() !== 1) return null; return { bleedSize: parseFloat(bleedDropdown.selection.text) / 10, // Convertir 3, 4, 5 en 0.3, 0.4, 0.5 safeZoneSize: parseFloat(safeZoneDropdown.selection.text) / 10, addCenterGuides: centerGuideCheckbox.value }; } // Fonction pour ajuster le plan de travail function resizeCanvasWithBleed(doc, bleedPixels) { var originalWidth = doc.width; var originalHeight = doc.height; doc.resizeCanvas(originalWidth + 2 * bleedPixels, originalHeight + 2 * bleedPixels, AnchorPosition.MIDDLECENTER); } // Fonction pour ajouter et verrouiller les repères function addGuidesAndLock(doc, bleedPixels, safeZonePixels, width, height, addCenterGuides) { // Ajouter les repères var guides = []; // Repères du fond perdu guides.push(addGuide(doc, 0, "V")); guides.push(addGuide(doc, width, "V")); guides.push(addGuide(doc, 0, "H")); guides.push(addGuide(doc, height, "H")); // Repères des dimensions de base guides.push(addGuide(doc, bleedPixels, "V")); guides.push(addGuide(doc, width - bleedPixels, "V")); guides.push(addGuide(doc, bleedPixels, "H")); guides.push(addGuide(doc, height - bleedPixels, "H")); // Repères de la zone de protection guides.push(addGuide(doc, bleedPixels + safeZonePixels, "V")); guides.push(addGuide(doc, width - bleedPixels - safeZonePixels, "V")); guides.push(addGuide(doc, bleedPixels + safeZonePixels, "H")); guides.push(addGuide(doc, height - bleedPixels - safeZonePixels, "H")); // Ajouter les repères centraux si activé // Verrouiller les repères en verrouillant le document doc.guides.locked = true; doc.suspendHistory("Verrouillage des repères", function() { app.runMenuItem(stringIDToTypeID("lockGuides")); }); if (addCenterGuides) { guides.push(addGuide(doc, width / 2, "V")); guides.push(addGuide(doc, height / 2, "H")); } // Verrouiller les repères doc.guides.locked = true; } // Fonction pour ajouter un repère function addGuide(doc, position, orientation) { return doc.guides.add(orientation === "H" ? Direction.HORIZONTAL : Direction.VERTICAL, position); } // Exécuter la fonction principale createBleed();