abracadabraPDF › Forums › PDF – Général › Action pour ouvrir une page web par script › Répondre à : Action pour ouvrir une page web par script

bonjour,
c’est plus complexe que je ne le pensais
C’est pas le plus simple dans le Javascript Acrobat… Il y a quelques exemples dans l’API Reference (https://opensource.adobe.com/dc-acrobat-sdk-docs/library/jsapiref/JS_API_AcroJS.html#execdialog) ou sur ce fichier de Thom Parker (page : https://www.pdfscripting.com/public/ACRODIALOGS-OVERVIEW.cfm, fichier : http://www.windjack.com/resources/Examples/DialogUses.pdf).
Si cela t’intéresse de créer des boites de dialogue je peu de donner quelques exemples simples.
Voilà ce que j’ai fait. Je pense l’avoir testé, mais dis-moi s’il y a des erreurs.
J’en ai profité pour faire un peu de pub à ma fille !!!
Voici le script :
var nomBoutons=[];
for (var k=0; k<10; k++) nomBoutons.push(this.getField("LinkT.1."+k).buttonGetCaption());
for (var k=0; k<10; k++) {
if (this.getField("LinkT.1."+k).buttonGetCaption()=="...") break;
}
if (k==10) app.alert("Tous les boutons renvoient à une URL.",3);
//
var bDialogue={
initialize: function(bDialogue) {
this.cbInit=true;
bDialogue.enable({url0: true});
this.loadDefaults(bDialogue);
},
loadDefaults: function(bDialogue) {
bDialogue.load({
cb00: false,
rd00: true,
url0: "http://www.",
});
bDialogue.insertEntryInList({"menu":{"- Indices -": 0}});
bDialogue.insertSeparatorEntryInList("menu");
for (var i=0; i<10; i++) {
if (i!=k) var par=-1;
else var par=1;
eval("bDialogue.insertEntryInList({\"menu\":{\""+i+"\": "+(par*(i+1))+"}});");
}
},
cb00: function(bDialogue) {
this.cbInit=!this.cbInit;
bDialogue.enable({init: this.cbInit});
},
quelBtRd: function (oRslt) {
for (var i=0; i<=1; i++) {
if (oRslt["rd0"+i]) {
switch (i) {
case 0:
resBtRd="Non";
break;
case 1:
resBtRd="Oui";
}
}
};
return resBtRd;
},
validate: function(bDialogue) {
var oRslt=bDialogue.store();
var elements=bDialogue.store()["menu"];
for (var i in elements) {
if (elements>0) indice=i;
}
if (indice=="- Indices -") {
app.alert("Veuillez sélectionner l'indice d'un champ;.",3);
return false;
} else {
initialiser=oRslt["cb00"];
if (initialiser) {
texteBouton="...";
texteURL="";
return true;
} else {
texteBouton=oRslt["nmbt"];
var testOK0=true;
if (!/^(\w|\W)+( (\w|\W)+)*$/.test(texteBouton)) var testOK0=false;
if (!testOK0) app.alert("Veuillez indiquer un nom pour le bouton.",3);
var testOK1=true;
texteURL=oRslt["url0"];
if (!/^(https?:\/\/)?([\w-]+(\.[\w-]+)+)(:\d+)?(\/[^\s]*)?$/i.test(texteURL)) var testOK1=false;
if (!testOK1) app.alert("Veuillez renseigner une URL correcte.",3);
cAc=this.quelBtRd(oRslt);
if (nomBoutons[indice]!="...") {
if (cAc=="Non") {
app.alert("Le bouton d'indice \""+indice+"\" est déjà renseigné.",3);
return false;
} else {
var reponse=app.alert("Le bouton d'indice \""+indice+"\" est déjà renseigné.\rSouhaitez-vous réellement le modifier ?",3,2);
if (reponse==3) return false;
}
}
var testOK=testOK0 && testOK1;
return testOK;
}
}
},
description: {
name: "Bouton vers URL",
first_tab: "cb00",
elements: [
{
type: "cluster", //
elements: [
{
type: "static_text",
name: "Indice du bouton",
font: "dialog",
bold: true,
},
{
type: "popup",
item_id: "menu",
alignment: "align_fill",
//width: 150,
},
{
type: "check_box",
alignment: "align_center",
item_id: "cb00",
name: " Réinitialiser le bouton",
},
{
type: "gap",
height: 5
},
{
type: "cluster",
item_id: "init",
elements: [
{
type: "static_text",
name: "Texte pour le bouton",
font: "dialog",
bold: true,
},
{
type: "edit_text",
item_id: "nmbt",
alignment: "align_fill",
},
{
type: "gap",
height: 5
},
{
type: "static_text",
name: "URL à atteindre",
font: "dialog",
bold: true,
},
{
type: "edit_text",
item_id: "url0",
alignment: "align_fill",
},
{
type: "gap",
height: 5
},
{
type: "static_text",
name: "Modifier le bouton si renseigné ?",
font: "dialog",
bold: true,
},
{
type: "view",
alignment: "align_center",
align_children: "align_row",
elements: [
{
type: "radio",
group_id: "gr00",
item_id: "rd00",
name: " Non",
},
{
type: "radio",
group_id: "gr00",
item_id: "rd01",
name: " Oui",
},
]
},
]
},
{
type: "gap",
height: 5
},
{
type: "ok_cancel",
},
]
},
]
}
};
if("ok"==app.execDialog(bDialogue)){
if (initialiser) {
this.getField("LinkT.1."+indice).setAction("MouseUp","//");
this.getField("LinkT.1."+indice).buttonSetCaption("...");
this.getField("LinkT.1."+indice).fillColor=color.ltGray;
} else {
this.getField("LinkT.1."+indice).setAction("MouseUp","app.launchURL(\""+texteURL+"\");");
this.getField("LinkT.1."+indice).buttonSetCaption(texteBouton);
this.getField("LinkT.1."+indice).fillColor=color.green;
}
}
…et le fichier où j’ai rajouté une ligne pour en avoir 10 (de 0 à 9).
@+
😎
-
Cette réponse a été modifiée le il y a 2 semaines et 6 jours par
bebarth.