Téléverser les fichiers vers "Font perdu"

This commit is contained in:
sebvtl 2024-11-25 23:08:08 +00:00
commit 74fda96a1c

View File

@ -0,0 +1,149 @@
// Script JSX pour Photoshop : Création de fonds perdus avec repères verrouillés
// Copyright © 2024 Sébastien VTL
#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();