fix: compatibilite Acrobat 2026 - suppression avecPrivileges, new Doc, newPage objet

- Supprime tous les appels a avecPrivileges() (beginPriv/endPriv crash dans Acrobat 2026)
- Remplace new Doc() par app.newDoc(w, h) dans tous les modules
- Remplace doc.newPage({nPage:x, width:w, height:h}) par doc.newPage(x, w, h)
- Modules corriges : Core, Licence, Livret, NUp, Decoupe, Marges, Reperes, Auto, MiseAJour
- Version 1.1.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jules Dubois
2026-06-26 00:10:26 +02:00
parent fd92b80350
commit ca54bd8d5e
10 changed files with 191 additions and 235 deletions

View File

@@ -147,7 +147,6 @@ CDImp.Util = {
if (!nSrcPage) {
return;
}
CDImp.Util.avecPrivileges(function () {
var nomTpl = "CDImp_tpl_" + nSrcPage + "_" + nDestPage + "_" + (new Date()).getTime();
var tpl = srcDoc.createTemplate({ cName: nomTpl, nPage: nSrcPage - 1 });
var cropOrigineDest = destDoc.getPageBox({ nPage: nDestPage, cBox: "Crop" });
@@ -158,7 +157,6 @@ CDImp.Util = {
destDoc.setPageBoxes({ nPage: nDestPage, cBox: "Crop", rBox: cropOrigineDest });
tpl.remove();
}
});
},
/**
@@ -180,7 +178,6 @@ CDImp.Util = {
* @param {Number} nDestPage index 0-based
*/
extraireRegionPage: function (srcDoc, nSrcPage, rectSource, destDoc, nDestPage) {
CDImp.Util.avecPrivileges(function () {
var cropOrigineSrc = srcDoc.getPageBox({ nPage: nSrcPage - 1, cBox: "Crop" });
try {
srcDoc.setPageBoxes({ nPage: nSrcPage - 1, cBox: "Crop", rBox: rectSource });
@@ -194,7 +191,6 @@ CDImp.Util = {
} finally {
srcDoc.setPageBoxes({ nPage: nSrcPage - 1, cBox: "Crop", rBox: cropOrigineSrc });
}
});
}
};
@@ -215,7 +211,7 @@ CDImp.Util.FORMATS_MM = {
// verification de mise a jour - voir Imposition-08-MiseAJour.js). A
// incrementer a chaque modification poussee sur Gitea.
// -----------------------------------------------------------------------
CDImp.VERSION = "1.0.1";
CDImp.VERSION = "1.1.0";
// -----------------------------------------------------------------------
// Sous-menu "Imposition Pro"

View File

@@ -71,10 +71,8 @@ CDImp.Licence._obtenirMachineId = function () {
for (var i = 0; i < 32; i++) {
id += Math.floor(Math.random() * 16).toString(16);
}
CDImp.Util.avecPrivileges(function () {
global.cdImpMachineId = id;
global.setPersistent("cdImpMachineId", true);
});
return id;
};
@@ -167,10 +165,8 @@ CDImp.Licence._obtenirCle = function () {
if (!cle) {
return null;
}
CDImp.Util.avecPrivileges(function () {
global.cdImpLicenceCle = cle;
global.setPersistent("cdImpLicenceCle", true);
});
CDImp.Licence._ecrireCleRegistre(cle);
return cle;
};
@@ -247,10 +243,8 @@ CDImp.Licence.verifier = function () {
var valide = !!(data.active || data.valid);
CDImp.Util.avecPrivileges(function () {
global.cdImpLicenceCache = { valide: valide, donnees: data, dateVerif: (new Date()).getTime() };
global.setPersistent("cdImpLicenceCache", true);
});
return { valide: valide, donnees: data, source: "serveur" };
};
@@ -298,12 +292,10 @@ CDImp.Licence.gererCle = function () {
if (nouvelleCle === null || nouvelleCle === cleActuelle) {
return;
}
CDImp.Util.avecPrivileges(function () {
global.cdImpLicenceCle = nouvelleCle;
global.setPersistent("cdImpLicenceCle", true);
global.cdImpLicenceCache = null; // force une nouvelle verification serveur
global.cdImpLicenceCache = null;
global.setPersistent("cdImpLicenceCache", true);
});
CDImp.Licence._ecrireCleRegistre(nouvelleCle);
CDImp.Util.info("Cle enregistree. Redemarrez Acrobat pour que le plugin natif\n(s'il est installe) la prenne en compte au prochain demarrage.");
var resultat = CDImp.Licence.verifier();

View File

@@ -74,7 +74,6 @@ CDImp.Livret.ajouterPagesBlanches = function (doc, nManque, position) {
var largeur = Math.abs(boxRef[2] - boxRef[0]);
var hauteur = Math.abs(boxRef[3] - boxRef[1]);
CDImp.Util.avecPrivileges(function () {
for (var k = 0; k < nManque; k++) {
var idxInsertion;
switch (position) {
@@ -86,12 +85,11 @@ CDImp.Livret.ajouterPagesBlanches = function (doc, nManque, position) {
break;
case "fin":
default:
idxInsertion = doc.numPages; // toujours recalcule : ajoute en fin
idxInsertion = doc.numPages;
break;
}
doc.newPage({ nPage: idxInsertion, width: largeur, height: hauteur });
doc.newPage(idxInsertion, largeur, hauteur);
}
});
};
/**
@@ -134,14 +132,10 @@ CDImp.Livret.construireDocument = function (srcDoc, planches, creepMm) {
var hauteurDest = hauteurSrc;
var nFeuilles = planches.length / 2;
var destDoc;
CDImp.Util.avecPrivileges(function () {
destDoc = new Doc();
destDoc.newPage({ nPage: 0, width: largeurDest, height: hauteurDest });
var destDoc = app.newDoc(largeurDest, hauteurDest);
for (var k = 1; k < planches.length; k++) {
destDoc.newPage({ nPage: k, width: largeurDest, height: hauteurDest });
destDoc.newPage(k, largeurDest, hauteurDest);
}
});
for (var i = 0; i < planches.length; i++) {
var planche = planches[i];
@@ -201,15 +195,10 @@ CDImp.Livret.delivretiser = function (doc) {
var hauteur = Math.abs(boxRef[3] - boxRef[1]);
var largeurDemiPage = largeurPlanche / 2;
var destDoc;
try {
CDImp.Util.avecPrivileges(function () {
destDoc = new Doc();
destDoc.newPage({ nPage: 0, width: largeurDemiPage, height: hauteur });
var destDoc = app.newDoc(largeurDemiPage, hauteur);
for (var k = 1; k < nPagesLogiques; k++) {
destDoc.newPage({ nPage: k, width: largeurDemiPage, height: hauteur });
destDoc.newPage(k, largeurDemiPage, hauteur);
}
});
for (var i = 0; i < planches.length; i++) {
var planche = planches[i];
@@ -219,10 +208,6 @@ CDImp.Livret.delivretiser = function (doc) {
CDImp.Util.extraireRegionPage(doc, i + 1, rectGauche, destDoc, planche.gauche - 1);
CDImp.Util.extraireRegionPage(doc, i + 1, rectDroite, destDoc, planche.droite - 1);
}
} catch (e) {
CDImp.Util.erreur("Erreur lors de la delivretisation : " + e.toString());
return;
}
if (CDImp.Auto && CDImp.Auto.enregistrerDerniereAction) {
CDImp.Auto.enregistrerDerniereAction("Livret.delivretiser", {});

View File

@@ -57,14 +57,10 @@ CDImp.NUp.construireGrille = function (srcDoc, p) {
var nParFeuille = p.nLignes * p.nColonnes;
var nFeuilles = (p.mode === "repeat") ? 1 : Math.ceil(srcDoc.numPages / nParFeuille);
var destDoc;
CDImp.Util.avecPrivileges(function () {
destDoc = new Doc();
destDoc.newPage({ nPage: 0, width: feuilleW, height: feuilleH });
var destDoc = app.newDoc(feuilleW, feuilleH);
for (var k = 1; k < nFeuilles; k++) {
destDoc.newPage({ nPage: k, width: feuilleW, height: feuilleH });
destDoc.newPage(k, feuilleW, feuilleH);
}
});
for (var s = 0; s < nFeuilles; s++) {
for (var r = 0; r < p.nLignes; r++) {

View File

@@ -28,10 +28,13 @@ CDImp.Decoupe = CDImp.Decoupe || {};
* @returns {Doc} nouveau document
*/
CDImp.Decoupe.couperPages = function (srcDoc, axe) {
var destDoc;
CDImp.Util.avecPrivileges(function () {
destDoc = new Doc();
});
var box0 = srcDoc.getPageBox({ nPage: 0, cBox: "Crop" });
var w0 = Math.abs(box0[2] - box0[0]);
var h0 = Math.abs(box0[3] - box0[1]);
var premiereW = (axe === "horizontal") ? w0 : w0 / 2;
var premiereH = (axe === "horizontal") ? h0 / 2 : h0;
var destDoc = app.newDoc(premiereW, premiereH);
var nDestPage = 0;
for (var s = 0; s < srcDoc.numPages; s++) {
@@ -39,23 +42,23 @@ CDImp.Decoupe.couperPages = function (srcDoc, axe) {
var w = Math.abs(box[2] - box[0]);
var h = Math.abs(box[3] - box[1]);
var demis; // [{rect, largeur, hauteur}, ...] dans l'ordre de lecture
var demis;
if (axe === "horizontal") {
demis = [
{ rect: [0, h / 2, w, h], largeur: w, hauteur: h / 2 }, // haut
{ rect: [0, 0, w, h / 2], largeur: w, hauteur: h / 2 } // bas
{ rect: [0, h / 2, w, h], largeur: w, hauteur: h / 2 },
{ rect: [0, 0, w, h / 2], largeur: w, hauteur: h / 2 }
];
} else {
demis = [
{ rect: [0, 0, w / 2, h], largeur: w / 2, hauteur: h }, // gauche
{ rect: [w / 2, 0, w, h], largeur: w / 2, hauteur: h } // droite
{ rect: [0, 0, w / 2, h], largeur: w / 2, hauteur: h },
{ rect: [w / 2, 0, w, h], largeur: w / 2, hauteur: h }
];
}
for (var d = 0; d < demis.length; d++) {
CDImp.Util.avecPrivileges(function () {
destDoc.newPage({ nPage: nDestPage, width: demis[d].largeur, height: demis[d].hauteur });
});
if (nDestPage > 0) {
destDoc.newPage(nDestPage, demis[d].largeur, demis[d].hauteur);
}
CDImp.Util.extraireRegionPage(srcDoc, s + 1, demis[d].rect, destDoc, nDestPage);
nDestPage++;
}
@@ -72,20 +75,21 @@ CDImp.Decoupe.couperPages = function (srcDoc, axe) {
*/
CDImp.Decoupe.inverserOrdre = function (srcDoc) {
var n = srcDoc.numPages;
var destDoc;
CDImp.Util.avecPrivileges(function () {
destDoc = new Doc();
});
var box0 = srcDoc.getPageBox({ nPage: n - 1, cBox: "Crop" });
var w0 = Math.abs(box0[2] - box0[0]);
var h0 = Math.abs(box0[3] - box0[1]);
var destDoc = app.newDoc(w0, h0);
for (var i = 0; i < n; i++) {
var nSrcPage = n - i; // 1-based, en partant de la derniere page
var nSrcPage = n - i;
var box = srcDoc.getPageBox({ nPage: nSrcPage - 1, cBox: "Crop" });
var w = Math.abs(box[2] - box[0]);
var h = Math.abs(box[3] - box[1]);
CDImp.Util.avecPrivileges(function () {
destDoc.newPage({ nPage: i, width: w, height: h });
});
if (i > 0) {
destDoc.newPage(i, w, h);
}
CDImp.Util.placerPageDansRect(srcDoc, nSrcPage, destDoc, i, [0, 0, w, h]);
}
@@ -115,22 +119,24 @@ CDImp.Decoupe.reassembler = function (srcDoc, motifStr) {
}
var nBlocs = srcDoc.numPages / taille;
var destDoc;
CDImp.Util.avecPrivileges(function () {
destDoc = new Doc();
});
var premiereSrcPage = motif[0];
var box0 = srcDoc.getPageBox({ nPage: premiereSrcPage - 1, cBox: "Crop" });
var w0 = Math.abs(box0[2] - box0[0]);
var h0 = Math.abs(box0[3] - box0[1]);
var destDoc = app.newDoc(w0, h0);
var nDestPage = 0;
for (var b = 0; b < nBlocs; b++) {
for (var k = 0; k < taille; k++) {
var nSrcPage = b * taille + motif[k]; // 1-based
var nSrcPage = b * taille + motif[k];
var box = srcDoc.getPageBox({ nPage: nSrcPage - 1, cBox: "Crop" });
var w = Math.abs(box[2] - box[0]);
var h = Math.abs(box[3] - box[1]);
CDImp.Util.avecPrivileges(function () {
destDoc.newPage({ nPage: nDestPage, width: w, height: h });
});
if (nDestPage > 0) {
destDoc.newPage(nDestPage, w, h);
}
CDImp.Util.placerPageDansRect(srcDoc, nSrcPage, destDoc, nDestPage, [0, 0, w, h]);
nDestPage++;
}

View File

@@ -53,7 +53,6 @@ CDImp.Marges.ajouterEspaceBlanc = function (doc, margesMm, portee) {
var droitePt = CDImp.Util.mmToPt(margesMm.droite);
var indices = CDImp.Marges._resoudrePortee(doc, portee);
CDImp.Util.avecPrivileges(function () {
for (var k = 0; k < indices.length; k++) {
var i = indices[k];
var crop = doc.getPageBox({ nPage: i, cBox: "Crop" });
@@ -61,7 +60,6 @@ CDImp.Marges.ajouterEspaceBlanc = function (doc, margesMm, portee) {
doc.setPageBoxes({ nPage: i, cBox: "Crop", rBox: nouveauCrop });
doc.setPageBoxes({ nPage: i, cBox: "Media", rBox: nouveauCrop });
}
});
};
// -----------------------------------------------------------------------
@@ -87,19 +85,20 @@ CDImp.Marges.deplacerContenu = function (srcDoc, dxMm, dyMm, portee) {
ensembleConcernes[indicesConcernes[k]] = true;
}
var destDoc;
CDImp.Util.avecPrivileges(function () {
destDoc = new Doc();
});
var box0 = srcDoc.getPageBox({ nPage: 0, cBox: "Crop" });
var w0 = Math.abs(box0[2] - box0[0]);
var h0 = Math.abs(box0[3] - box0[1]);
var destDoc = app.newDoc(w0, h0);
for (var i = 0; i < srcDoc.numPages; i++) {
var box = srcDoc.getPageBox({ nPage: i, cBox: "Crop" });
var w = Math.abs(box[2] - box[0]);
var h = Math.abs(box[3] - box[1]);
CDImp.Util.avecPrivileges(function () {
destDoc.newPage({ nPage: i, width: w, height: h });
});
if (i > 0) {
destDoc.newPage(i, w, h);
}
var decalX = ensembleConcernes[i] ? dxPt : 0;
var decalY = ensembleConcernes[i] ? dyPt : 0;
@@ -124,7 +123,6 @@ CDImp.Marges.harmoniserBoites = function (doc, cBoxRef, portee) {
var indices = CDImp.Marges._resoudrePortee(doc, portee);
var toutesBoites = ["Media", "Crop", "Bleed", "Trim"];
CDImp.Util.avecPrivileges(function () {
for (var k = 0; k < indices.length; k++) {
var i = indices[k];
var rectRef = doc.getPageBox({ nPage: i, cBox: cBoxRef });
@@ -132,7 +130,6 @@ CDImp.Marges.harmoniserBoites = function (doc, cBoxRef, portee) {
doc.setPageBoxes({ nPage: i, cBox: toutesBoites[b], rBox: rectRef });
}
}
});
};
// -----------------------------------------------------------------------

View File

@@ -40,7 +40,6 @@ CDImp.Reperes.ajouterTraitsCoupe = function (doc, opts) {
var epaisseur = opts.epaisseurPt || 0.25;
var cBoxRef = opts.cBoxRef || "Trim";
CDImp.Util.avecPrivileges(function () {
for (var i = 0; i < doc.numPages; i++) {
var box = doc.getPageBox({ nPage: i, cBox: cBoxRef });
var llx = Math.min(box[0], box[2]);
@@ -49,16 +48,12 @@ CDImp.Reperes.ajouterTraitsCoupe = function (doc, opts) {
var ury = Math.max(box[1], box[3]);
var traits = [
// bas-gauche
[llx - decalage - longueur, lly, llx - decalage, lly],
[llx, lly - decalage - longueur, llx, lly - decalage],
// bas-droite
[urx + decalage, lly, urx + decalage + longueur, lly],
[urx, lly - decalage - longueur, urx, lly - decalage],
// haut-gauche
[llx - decalage - longueur, ury, llx - decalage, ury],
[llx, ury + decalage, llx, ury + decalage + longueur],
// haut-droite
[urx + decalage, ury, urx + decalage + longueur, ury],
[urx, ury + decalage, urx, ury + decalage + longueur]
];
@@ -81,7 +76,6 @@ CDImp.Reperes.ajouterTraitsCoupe = function (doc, opts) {
});
}
}
});
};
// -----------------------------------------------------------------------
@@ -126,7 +120,6 @@ CDImp.Reperes.ajouterNumerotation = function (doc, opts) {
var offsetXPt = CDImp.Util.mmToPt(opts.positionXmm);
var offsetYPt = CDImp.Util.mmToPt(opts.positionYmm);
CDImp.Util.avecPrivileges(function () {
for (var i = 0; i < doc.numPages; i++) {
var numPage = i + 1;
if (opts.masquerPremierePage && numPage === 1) {
@@ -151,7 +144,6 @@ CDImp.Reperes.ajouterNumerotation = function (doc, opts) {
nEnd: i
});
}
});
};
// -----------------------------------------------------------------------

View File

@@ -20,12 +20,10 @@ if (typeof CDImp === "undefined") {
CDImp.Auto = CDImp.Auto || {};
// Initialise l'espace de stockage persistant des presets.
CDImp.Util.avecPrivileges(function () {
if (typeof global.impositionSettings === "undefined") {
if (typeof global.impositionSettings === "undefined") {
global.impositionSettings = {};
}
global.setPersistent("impositionSettings", true);
});
}
global.setPersistent("impositionSettings", true);
// Memoire de la derniere action executee (module + parametres), pour le
// bouton "Repeter la derniere action". Reinitialisee a chaque session.
@@ -85,9 +83,7 @@ CDImp.Auto.sauvegarderPreset = function (nomPreset) {
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.");
};
@@ -128,9 +124,7 @@ CDImp.Auto.chargerEtExecuterPreset = function (doc, nomPreset) {
* Supprime un preset enregistre.
*/
CDImp.Auto.supprimerPreset = function (nomPreset) {
CDImp.Util.avecPrivileges(function () {
delete global.impositionSettings[nomPreset];
});
};
// -----------------------------------------------------------------------

View File

@@ -190,7 +190,6 @@ CDImp.MiseAJour.verifier = function () {
}
var erreurs = [];
CDImp.Util.avecPrivileges(function () {
for (var d = 0; d < dossiers.length; d++) {
for (var f = 0; f < CDImp.MiseAJour.CONFIG.fichiers.length; f++) {
var nomFichier = CDImp.MiseAJour.CONFIG.fichiers[f];
@@ -202,7 +201,6 @@ CDImp.MiseAJour.verifier = function () {
}
}
}
});
if (erreurs.length > 0) {
CDImp.Util.erreur("Mise a jour partielle, erreurs sur " + erreurs.length + " fichier(s) :\n" + erreurs.join("\n"));

View File

@@ -1 +1 @@
1.0.1
1.1.0