abracadabraPDF › Forums › PDF – Général › Propriété d’un champ › Répondre à : Propriété d’un champ
Lorsque tu auras trouvé si on peut placer des scripts d’application, voici un nouveau fichier qui devrait fonctionner avec un bouton.
J’ai supprimé le calcul des nombres de paragraphes, mots et caractères et le script est en pièce jointe au fichier au format txt.
// En script d'application (extension du fichier .js)
if (app.formsVersion>=8) {
ajoutPage=app.trustedFunction(function(cettePage,largeur,hauteur) {
app.beginPriv();
this.newPage(cettePage,largeur,hauteur);
app.endPriv();
});
suppressionPage=app.trustedFunction(function(cettePage) {
app.beginPriv();
this.deletePages(cettePage);
app.endPriv();
});
}
// En script de calcul du bouton
console.show();
console.clear();
// Variables
var p=this.numPages;
var g=this.getField("champTexte");
var gRect=g.rect;
var hautChamp=gRect[1];
var basChamp=gRect[3];
var paragraphes=g.value.split("\r");
var nbParagraphes=paragraphes.length;
var toutLeTexte=g.value;
var nbCaracteres=toutLeTexte.length;
var texteEntier=g.value;
var nbLignesTexte=0;
var nbLignes=0;
var deltaLignes=0;
var aRect=this.getPageBox("Crop");
var laPage=0;
if (toutLeTexte.length) {
// Boucle si texte débordant de la page
while (toutLeTexte.length) {
// Nouvelle page
ajoutPage(p, aRect[2], aRect[1]);
//this.newPage(p, aRect[2], aRect[1]);
var basMot=hautChamp;
// Copie du champ
var f=this.addField("autreChamp", "text", p, g.rect);
for (var j in g) {
try {
if (typeof g[j]!="function" && j!="name" && j!="type" && j!="page" && j!="rect") f[j]=g[j];
} catch(e) {}
}
f.value=toutLeTexte;
// Aplatissement
this.flattenPages(p);
// Nombre de mots
var nbMots=this.getPageNumWords(p);
for (var i=0; i<nbMots; i++) {
var leMot=this.getPageNthWord(p, i, true);
var q=this.getPageNthWordQuads(p, i);
m=(new Matrix2D).fromRotated(this,p);
mInv=m.invert();
r=mInv.transform(q);
r=r.toString();
r=r.split(",");
if (Number(r[5])>basChamp) {
if (Number(r[5])<basMot) {
var basMot=Number(r[5]);
if (!laPage) nbLignesTexte++;
nbLignes++;
}
if (!laPage) {
if (i==0) {
var hautTexte=Number(r[1]);
var premiereLigne=basMot;
var deltaV=hautChamp-hautTexte;
}
if (nbLignes==2 && !deltaLignes) var deltaLignes=premiereLigne-Number(r[5]);
}
var toutLeTexte=toutLeTexte.substr(toutLeTexte.indexOf(leMot)+leMot.length)
var toutLeTexte=toutLeTexte.replace(/[\"\”\*\-\_\,\.\;\:!?\'\(\)\{\}\[\]\«\»]$/, "").replace(/\s+$/, "");
} else break;
}
laPage++;
suppressionPage(p);
//this.deletePages(p);
}
// Redimensionnement
var champBas=premiereLigne-(deltaLignes*(nbLignes-1))-deltaV;
if (champBas<=0) var champBas=0;
gRect[3]=champBas;
g.rect=gRect;
g.value=texteEntier;
// Texte Alerte et Console
var leTexte="Le texte du champ \""+this.getField("champTexte").name+"\" est écrit sur "+nbLignes+" ligne";
if (nbLignes>1) leTexte+="s";
leTexte+=". ";
if (champBas!=basChamp) leTexte+="\r\rLe champ a été redimensionné.\rIl comportait "+nbLignesTexte+" lignes visibles entièrement.";
if (champBas<basChamp) {
if (champBas>0) leTexte+="\r\rToutes les lignes sont maintenant visibles.";
else leTexte+="\r\rLe champ n'est pas assez haut pour afficher tout le texte avec ce corps.";
}
console.println(leTexte);
app.alert(leTexte,3);
console.hide();
//this.dirty=false;
} else {
app.alert("Il faut écrire un texte dans ce champ pour pouvoir le redimensionner !",3);
}
@+
😎
- Cette réponse a été modifiée le il y a 10 mois par bebarth.