Ajoute le plugin Acrobat Pro d'imposition (acrobat-plugin/)
Suite d'imposition professionnelle en Folder-Level Scripts JS (7 modules + verification de licence Vision), avec un plugin natif hybride optionnel (WinINet + Registre) pour deplacer la verification de licence en code compile. Installeur install.bat sur le meme modele que celui du projet desktop (git portable, detection automatique des dossiers Acrobat).
This commit is contained in:
189
acrobat-plugin/src/Imposition-07-Auto.js
Executable file
189
acrobat-plugin/src/Imposition-07-Auto.js
Executable file
@@ -0,0 +1,189 @@
|
||||
// Imposition-07-Auto.js
|
||||
// ---------------------------------------------------------------------------
|
||||
// Suite d'imposition professionnelle - Folder-Level Script pour Adobe Acrobat Pro
|
||||
// Module 7 : Automatisation (sequences de commandes / presets)
|
||||
//
|
||||
// Depend de Imposition-00-Core.js (doit etre charge avant) ainsi que des
|
||||
// modules 2 a 6 pour le rejeu d'actions (chacun expose une fonction
|
||||
// "executerAvecParams(doc, params)" sans dialogue, appelee ici).
|
||||
//
|
||||
// Les presets sont stockes dans l'objet global persistant
|
||||
// global.impositionSettings (survit aux fermetures d'Acrobat grace a
|
||||
// global.setPersistent). La "derniere action" n'est gardee qu'en memoire
|
||||
// pour la session courante.
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
if (typeof CDImp === "undefined") {
|
||||
throw new Error("Imposition-07-Auto.js : CDImp.Core doit etre charge avant ce fichier.");
|
||||
}
|
||||
|
||||
CDImp.Auto = CDImp.Auto || {};
|
||||
|
||||
// Initialise l'espace de stockage persistant des presets.
|
||||
CDImp.Util.avecPrivileges(function () {
|
||||
if (typeof global.impositionSettings === "undefined") {
|
||||
global.impositionSettings = {};
|
||||
}
|
||||
global.setPersistent("impositionSettings", true);
|
||||
});
|
||||
|
||||
// Memoire de la derniere action executee (module + parametres), pour le
|
||||
// bouton "Repeter la derniere action". Reinitialisee a chaque session.
|
||||
CDImp.Auto.derniereAction = null;
|
||||
|
||||
// Table de correspondance "cle d'action" -> fonction de rejeu sans dialogue.
|
||||
// Chaque entree appelle la variante "executerAvecParams" du module concerne.
|
||||
CDImp.Auto._dispatch = {
|
||||
"Livret.imposer": function (doc, params) { return CDImp.Livret.executerAvecParams(doc, params); },
|
||||
"Livret.delivretiser": function (doc) { return CDImp.Livret.delivretiser(doc); },
|
||||
"NUp.executer": function (doc, params) { return CDImp.NUp.executerAvecParams(doc, params); },
|
||||
"Decoupe.executer": function (doc, params) { return CDImp.Decoupe.executerAvecParams(doc, params); },
|
||||
"Marges.executer": function (doc, params) { return CDImp.Marges.executerAvecParams(doc, params); },
|
||||
"Reperes.executer": function (doc, params) { return CDImp.Reperes.executerAvecParams(doc, params); }
|
||||
};
|
||||
|
||||
/**
|
||||
* Appelee par chaque module a l'issue d'une execution reussie, pour
|
||||
* permettre "Repeter la derniere action" et la sauvegarde en preset.
|
||||
*
|
||||
* @param {String} cle une des cles de CDImp.Auto._dispatch
|
||||
* @param {Object} params parametres necessaires au rejeu
|
||||
*/
|
||||
CDImp.Auto.enregistrerDerniereAction = function (cle, params) {
|
||||
if (!CDImp.Auto._dispatch[cle]) {
|
||||
return; // cle inconnue : on ignore silencieusement (pas bloquant)
|
||||
}
|
||||
CDImp.Auto.derniereAction = { cle: cle, params: params || {} };
|
||||
};
|
||||
|
||||
/**
|
||||
* Rejoue la derniere action enregistree sur le document fourni (typiquement
|
||||
* un nouveau document different de celui d'origine), sans repasser par les
|
||||
* boites de dialogue.
|
||||
*/
|
||||
CDImp.Auto.repeterDerniereAction = function (doc) {
|
||||
if (!CDImp.Auto.derniereAction) {
|
||||
CDImp.Util.erreur("Aucune action a repeter : lancez d'abord un module d'imposition.");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
doc = CDImp.Util.getDocActif(doc);
|
||||
var fn = CDImp.Auto._dispatch[CDImp.Auto.derniereAction.cle];
|
||||
var destDoc = fn(doc, CDImp.Auto.derniereAction.params);
|
||||
CDImp.Util.info("Derniere action (" + CDImp.Auto.derniereAction.cle + ") rejouee avec succes.");
|
||||
return destDoc;
|
||||
} catch (e) {
|
||||
CDImp.Util.erreur("Erreur lors de la repetition de l'action : " + e.toString());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Enregistre la derniere action sous un nom de preset persistant.
|
||||
*/
|
||||
CDImp.Auto.sauvegarderPreset = function (nomPreset) {
|
||||
if (!CDImp.Auto.derniereAction) {
|
||||
CDImp.Util.erreur("Aucune action a enregistrer : lancez d'abord un module d'imposition.");
|
||||
return;
|
||||
}
|
||||
CDImp.Util.avecPrivileges(function () {
|
||||
global.impositionSettings[nomPreset] = CDImp.Auto.derniereAction;
|
||||
});
|
||||
CDImp.Util.info("Preset \"" + nomPreset + "\" enregistre.");
|
||||
};
|
||||
|
||||
/**
|
||||
* Retourne la liste des noms de presets enregistres.
|
||||
*/
|
||||
CDImp.Auto.listerPresets = function () {
|
||||
var noms = [];
|
||||
for (var nom in global.impositionSettings) {
|
||||
if (global.impositionSettings.hasOwnProperty(nom)) {
|
||||
noms.push(nom);
|
||||
}
|
||||
}
|
||||
return noms;
|
||||
};
|
||||
|
||||
/**
|
||||
* Charge un preset et l'execute directement sur le document fourni.
|
||||
*/
|
||||
CDImp.Auto.chargerEtExecuterPreset = function (doc, nomPreset) {
|
||||
var action = global.impositionSettings[nomPreset];
|
||||
if (!action) {
|
||||
CDImp.Util.erreur("Preset introuvable : " + nomPreset);
|
||||
return;
|
||||
}
|
||||
try {
|
||||
doc = CDImp.Util.getDocActif(doc);
|
||||
var fn = CDImp.Auto._dispatch[action.cle];
|
||||
var destDoc = fn(doc, action.params);
|
||||
CDImp.Util.info("Preset \"" + nomPreset + "\" execute avec succes.");
|
||||
return destDoc;
|
||||
} catch (e) {
|
||||
CDImp.Util.erreur("Erreur lors de l'execution du preset : " + e.toString());
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Supprime un preset enregistre.
|
||||
*/
|
||||
CDImp.Auto.supprimerPreset = function (nomPreset) {
|
||||
CDImp.Util.avecPrivileges(function () {
|
||||
delete global.impositionSettings[nomPreset];
|
||||
});
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// Point d'entree du module
|
||||
// -----------------------------------------------------------------------
|
||||
CDImp.Auto.lancer = function (doc) {
|
||||
try {
|
||||
doc = CDImp.Util.getDocActif(doc);
|
||||
} catch (e) {
|
||||
CDImp.Util.erreur(e.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
var presets = CDImp.Auto.listerPresets();
|
||||
var options = [
|
||||
{ cName: "Repeter la derniere action sur ce document", cReturn: "repeter" },
|
||||
{ cName: "Enregistrer la configuration actuelle comme preset", cReturn: "sauvegarder" }
|
||||
];
|
||||
if (presets.length > 0) {
|
||||
options.push({ cName: "Charger et executer un preset...", cReturn: "charger" });
|
||||
options.push({ cName: "Supprimer un preset...", cReturn: "supprimer" });
|
||||
}
|
||||
|
||||
var choix = app.popUpMenu.apply(app, options);
|
||||
if (!choix) { return; }
|
||||
|
||||
switch (choix) {
|
||||
case "repeter":
|
||||
CDImp.Auto.repeterDerniereAction(doc);
|
||||
break;
|
||||
|
||||
case "sauvegarder": {
|
||||
var nom = app.response({ cQuestion: "Nom du preset :", cTitle: "Enregistrer la configuration", cDefault: "MonPreset" });
|
||||
if (nom === null || nom === "") { return; }
|
||||
CDImp.Auto.sauvegarderPreset(nom);
|
||||
break;
|
||||
}
|
||||
|
||||
case "charger": {
|
||||
var presetsOptions = presets.map(function (n) { return { cName: n, cReturn: n }; });
|
||||
var nomChoisi = app.popUpMenu.apply(app, presetsOptions);
|
||||
if (!nomChoisi) { return; }
|
||||
CDImp.Auto.chargerEtExecuterPreset(doc, nomChoisi);
|
||||
break;
|
||||
}
|
||||
|
||||
case "supprimer": {
|
||||
var presetsOptionsSupp = presets.map(function (n) { return { cName: n, cReturn: n }; });
|
||||
var nomASupprimer = app.popUpMenu.apply(app, presetsOptionsSupp);
|
||||
if (!nomASupprimer) { return; }
|
||||
CDImp.Auto.supprimerPreset(nomASupprimer);
|
||||
CDImp.Util.info("Preset \"" + nomASupprimer + "\" supprime.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user