Comment effectuer des calculs sur des champs spécifiques d’un formulaire PDF avec la macro ONLYOFFICE
Les macros ONLYOFFICE sont puissantes et polyvalentes, ce qui les rend utiles non seulement pour automatiser des tâches dans des documents, des feuilles de calcul et des présentations, mais aussi dans des formulaires PDF. Dans cet article, nous allons vous montrer comment créer et exécuter une macro unique qui effectue des calculs sur des champs spécifiques d’un formulaire. Dans cet exemple, la macro permet de calculer les taxes, ce qui rend le processus plus rapide et plus précis.
Construction de la macro
Récupération de tous les formulaires du document
Tout d’abord, nous récupérons tous les champs du document :
// Get all forms from the document
const document = Api.GetDocument();
let forms = document.GetAllForms();
- Api.GetDocument() récupère le document actif.
- GetAllForms() récupère tous les champs de formulaire du document.
Définition des clés de formulaire
Ensuite, nous définissons les clés du formulaire :
// Formkeys of input forms
var formkey1 = "Form1";
var formkey2 = "Form2";
var taxFormkey = "TaxForm";
// Formkeys of result forms
var sumResultKey = "SumResult";
var taxResultKey = "TaxResult";
- formkey1, formkey2 et taxFormkey stockent les identifiants des champs de saisie.
- sumResultKey et taxResultKey stockent les identifiants des champs de sortie dans lesquels les résultats seront insérés.
Récupération des valeurs du formulaire
La fonction getFormValue parcourt les formulaires à la recherche d’un formulaire correspondant à formKey :
// Function to get the value of a form by its key
function getFormValue(formKey) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
return parseFloat(form.GetText()) || 0;
}
}
}
- GetText() récupère la valeur du texte du formulaire.
- parseFloat() convertit le texte en nombre.
Si la conversion échoue, la valeur par défaut est 0 afin d’éviter les erreurs de calcul.
Insertion de valeurs dans les formulaires
La fonction setFormValue recherche un champ de formulaire correspondant à formKey. La méthode SetText() met à jour le champ avec une valeur numérique formatée (2 décimales).
// Function to set the value of a result form
function setFormValue(formKey, value) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
form.SetText(value.toFixed(2));
}
}
}
Calculs principaux
Dans la fonction de calcul principale, nous :
- Récupérons les valeurs saisies par l’utilisateur dans les champs de formulaire.
- Calculons la somme de input1 et de input2.
- Calculons l’impôt en pourcentage de la somme.
- Appelons setFormValue() pour insérer les résultats dans leurs champs respectifs.
// Main calculation function
function calculateAndInsert() {
let input1 = getFormValue(formkey1);
let input2 = getFormValue(formkey2);
let taxInput = getFormValue(taxFormkey);
// Perform calculations
var sum = parseFloat(input1) + parseFloat(input2);
var tax = sum * taxInput / 100; // % tax
// Insert results
setFormValue(sumResultKey, sum);
setFormValue(taxResultKey, tax);
}
Le code macro complet est le suivant :
(function () {
// Get all forms from the document
const document = Api.GetDocument();
let forms = document.GetAllForms();
// Formkeys of input forms
var formkey1 = "Form1";
var formkey2 = "Form2";
var taxFormkey = "TaxForm";
// Formkeys of result forms
var sumResultKey = "SumResult";
var taxResultKey = "TaxResult";
// Function to get the value of a form by its key
function getFormValue(formKey) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
return parseFloat(form.GetText()) || 0;
}
}
}
// Function to set the value of a result form
function setFormValue(formKey, value) {
for (let form of forms) {
if (form.GetFormKey() === formKey) {
form.SetText(value.toFixed(2));
}
}
}
// Main calculation function
function calculateAndInsert() {
let input1 = getFormValue(formkey1);
let input2 = getFormValue(formkey2);
let taxInput = getFormValue(taxFormkey);
// Perform calculations
var sum = parseFloat(input1) + parseFloat(input2);
var tax = sum * taxInput / 100; // % tax
// Insert results
setFormValue(sumResultKey, sum);
setFormValue(taxResultKey, tax);
}
// Call the calculation function
calculateAndInsert();
})();
Maintenant, exécutons la macro et voyons comment elle fonctionne !
Chez ONLYOFFICE, nous nous efforçons de fournir aux utilisateurs des outils polyvalents adaptés à leurs besoins. Les macros sont de puissants compléments à votre boîte à outils. Nous espérons que celle-ci deviendra un atout précieux pour vous.
Nous vous encourageons également à explorer notre vaste bibliothèque de méthodes API et à créer vos propres macros. Si vous avez des macros ou des idées à partager, n’hésitez pas à nous contacter : nous sommes toujours ouverts aux suggestions et à la collaboration. Nous vous souhaitons bonne chance dans vos efforts d’exploration !
Créez votre compte ONLYOFFICE gratuit
Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.