IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Manipulation de contenu PDF avec la nouvelle API de l'éditeur PDF ONLYOFFICE: trois exemples de macros illustrant les fonctionnalités offertes par cette API

Le , par Daria Lapikhina

166PARTAGES

3  0 
Manipulation de contenu PDF avec la nouvelle API de l’éditeur PDF ONLYOFFICE: trois exemples de macros illustrant les fonctionnalités offertes par cette API

ONLYOFFICE est une suite logicielle de productivité. La suite comprend des applications pour le traitement de texte (Document Editor), les feuilles de calcul (Spreadsheet Editor), les présentations (Presentation Editor), la visualisation et l'édition de fichiers PDF (PDF Viewer and Editor), la création de formulaires et la visualisation de diagrammes. Elle prend en charge nativement les formats Office Open XML (.docx, .xlsx, .pptx, etc.).

ONLYOFFICE est disponible à la fois sous forme de service cloud et de logiciel auto-hébergé, avec des options de déploiement pour les serveurs Linux et Windows, ainsi que des clients de bureau pour Windows, macOS et Linux, et des applications mobiles pour iOS et Android. La suite s'intègre également à des plateformes telles que Nextcloud, ownCloud, Seafile et Confluence.

ONLYOFFICE a récemment publié une nouvelle API pour son éditeur PDF, qui permet désormais l’utilisation de macros dans les fichiers PDF. Cette API offre la possibilité d’interagir avec des documents PDF par programmation, automatisant ainsi des tâches qui nécessitaient auparavant une intervention manuelle. Cet article présente trois exemples de macros illustrant les fonctionnalités offertes par cette API.

Nouvelles méthodes de l’API PDF

La version 9.3 de l’API PDF introduit plusieurs méthodes permettant de manipuler le contenu des documents. Parmi les principales :


Ces méthodes font partie des classes ApiDocument, ApiPage, ApiBaseAnnotation et ApiDrawing et peuvent être combinées avec les méthodes existantes de l’API Office.

Exemple 1 : suppression d’annotations par mot-clé


Cette macro supprime toutes les annotations contenant un mot-clé spécifique. Elle parcourt toutes les pages du document, récupère les annotations et supprime celles correspondant au critère défini.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(function () {
    const KEYWORD = "example";
    const doc = Api.GetDocument();
    const pagesCount = doc.GetPagesCount();
    let deletedCount = 0;


    for (let i = 0; i < pagesCount; i++) {
        const page = doc.GetPage(i);
        const annots = page.GetAllAnnots();
        if (!annots || annots.length === 0) continue;


        for (let j = annots.length - 1; j >= 0; j--) {
            const annot = annots[j];
            const contents = (annot.GetContents() || "").toLowerCase();
            if (contents.includes(KEYWORD.toLowerCase())) {
                annot.Delete();
                deletedCount++;
            }
        }
    }


    console.log("Deleted annotations containing keyword:", KEYWORD);
    console.log("Total deleted:", deletedCount);
})();


Une fois la macro exécutée, toutes les annotations contenant le mot-clé spécifié sont supprimées du document. Pour cibler un autre mot, il suffit de modifier la variable KEYWORD en haut du code.



Exemple 2 : suppression de tous les dessins

Une autre macro permet de supprimer tous les objets graphiques d’un document, ou uniquement un type précis (forme, image ou graphique). La méthode GetAllDrawings() récupère tous les éléments visuels d’une page, et GetClassType() permet de vérifier leur type avant suppression.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(function () {
    const doc = Api.GetDocument();
    const pagesCount = doc.GetPagesCount();
    let totalDeleted = 0;


    const targetType = "all";


    for (let i = 0; i < pagesCount; i++) {
        const page = doc.GetPage(i);
        const drawings = page.GetAllDrawings();


        for (let j = 0; j < drawings.length; j++) {
            if (targetType === "all" || drawings[j].GetClassType() === targetType) {
                drawings[j].Delete();
                totalDeleted++;
            }
        }
    }


    console.log("Deleted " + totalDeleted + " drawing(s) from " + pagesCount + " page(s).");
})();


Cette macro permet d’automatiser la suppression de graphiques obsolètes avant redistribution ou impression.

Que vous prépariez un document pour l’impression, supprimiez des schémas obsolètes ou effaciez des images avant de le redistribuer, cette macro s’en charge. En modifiant la variable targetType, vous pouvez passer d’un nettoyage complet à un nettoyage sélectif sans avoir à modifier aucune autre partie du code.



Exemple 3 : ajout d’un filigrane sur chaque page

La dernière macro montre comment ajouter un filigrane personnalisable sur toutes les pages d’un document. La position, la taille, la couleur et l’angle de rotation du filigrane sont entièrement paramétrables.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(function () {
    const doc = Api.GetDocument();
    const pagesCount = doc.GetPagesCount();


    const watermarkText = "DRAFT";
    const bgColor = Api.CreateRGBColor(200, 200, 200);
    const textColor = Api.CreateRGBColor(255, 255, 255);
    const fontSize = 72;
    const positionX = 1200000;
    const positionY = 4000000;
    const rotation = -45;


    for (let i = 0; i < pagesCount; i++) {
        const page = doc.GetPage(i);
        const fill = Api.CreateSolidFill(bgColor);
        const stroke = Api.CreateStroke(0, Api.CreateNoFill());
        const watermark = Api.CreateShape("rect", 160 * 36000, 20 * 36000, fill, stroke);
        watermark.SetPosition(positionX, positionY);
        watermark.SetRotation(rotation);


        const content = watermark.GetContent();
        const para = content.GetElement(0);
        para.SetJc("center");
        const run = para.AddText(watermarkText);
        run.SetFontSize(fontSize);
        run.SetBold(true);
        run.SetFill(Api.CreateSolidFill(textColor));


        page.AddObject(watermark);
    }
})();


Le filigrane est créé à partir d’une forme standard accompagnée d’un texte, ce qui vous permet de contrôler entièrement son apparence, qu’il s’agisse d’une discrète inscription en arrière-plan ou d’un tampon en gras occupant toute la page. Vous pouvez également tester différentes tailles de forme, styles de police ou angles de rotation afin de trouver le rendu qui convient le mieux à vos documents.



Ces trois macros représentent des exemples d’automatisation possibles avec la nouvelle API PDF d’ONLYOFFICE. Les méthodes peuvent être combinées pour créer des macros plus complexes et adaptées à des workflows spécifiques.

Liens utiles

Nouveautés d’ONLYOFFICE Docs 9.3

Exemples de macros PDF ONLYOFFICE

Premiers pas avec les macros

Débogage des macros

ONLYOFFICE sur GitHub
Vous avez lu gratuitement 169 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !