Modifiez le contenu des fichiers PDF grâce à la nouvelle API de l’éditeur PDF ONLYOFFICE

18 mars 2026Par Dasha

ONLYOFFICE a récemment lancé une nouvelle API PDF, qui permet désormais d’utiliser des macros dans les fichiers PDF. Grâce à ces nouvelles méthodes, vous pouvez interagir avec des documents PDF par programmation, ce qui vous permet d’automatiser des tâches qui, autrement, nécessiteraient une intervention manuelle. Dans cet article, nous allons découvrir trois macros pratiques qui illustrent les possibilités offertes par cette nouvelle API.Manipulate PDF Content with the New ONLYOFFICE PDF Editor API

Nouvelles méthodes de l’API PDF

Voici un aperçu des nouvelles méthodes utilisées dans trois exemples de macro :

  • GetPagesCount()  renvoie le nombre total de pages du document PDF.
  • GetPage(index) récupère un objet de page spécifique à partir de son index, en renvoyant un objet ApiPage.
  • GetAllAnnots()  renvoie un tableau contenant tous les objets d’annotation d’une page donnée.
  • GetContents() récupère le contenu textuel d’une annotation.
  • GetAllDrawings() renvoie un tableau contenant tous les objets de dessin (formes, graphiques, images).
  • SetPosition(x, y) positionne un objet de dessin directement sur la page à l’aide de coordonnées absolues.
  • AddObject(object) ajoute un objet de dessin (forme, graphique, image) à une page spécifique.
  • Delete() supprime l’objet spécifié du document.

Ces méthodes appartiennent aux classes ApiDocument, ApiPage, ApiBaseAnnotation et ApiDrawing. Elles peuvent être combinées avec les méthodes existantes de l’API Office que vous connaissez peut-être déjà.

Exemple 1 : Supprimer les annotations par mot-clé

Notre première macro recherche et supprime toutes les annotations contenant un mot-clé spécifique. Voyons cela étape par étape.

Configuration du mot-clé et du document

const KEYWORD = "example";
const doc = Api.GetDocument();
const pagesCount = doc.GetPagesCount();
let deletedCount = 0;

Tout d’abord, nous définissons le mot-clé cible : toute annotation dont le contenu comprend ce mot sera supprimée. Ensuite, nous récupérons le document actuel et obtenons le nombre total de pages à l’aide de la fonction GetPagesCount(). La variable deletedCount permettra de compter le nombre d’annotations supprimées.

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

    if (!annots || annots.length === 0) continue;

Une boucle « for » parcourt toutes les pages. Pour chaque page, nous utilisons la méthode GetPage() pour récupérer l’objet ApiPage, puis la méthode GetAllAnnots() pour récupérer toutes les annotations de cette page. Si une page ne contient aucune annotation, nous la sautons et passons à la suivante.

Correspondance et suppression d’annotations

for (let j = annots.length - 1; j >= 0; j--) {
    const annot = annots[j];
    const contents = (annot.GetContents() || "").toLowerCase();

Dans chaque page, nous parcourons les annotations dans l’ordre inverse. Il est important de procéder à cette itération à rebours, car la suppression d’éléments d’un tableau lors d’un parcours vers l’avant peut entraîner des décalages d’index et des éléments ignorés. Pour chaque annotation, nous extrayons son texte à l’aide de la fonction GetContents() et le convertissons en minuscules afin de permettre une comparaison insensible à la casse.

if (contents.includes(KEYWORD.toLowerCase())) {
    annot.Delete();
    deletedCount++;
}

Si le texte de l’annotation contient le mot-clé cible, nous appelons la fonction Delete() pour le supprimer du document et incrémenter le compteur.

console.log("Deleted annotations containing keyword:", KEYWORD);

console.log("Total deleted:", deletedCount);

À la fin, la macro affiche sur la console le mot-clé recherché ainsi que le nombre total d’annotations supprimées.

Voici le code complet de la macro :

(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.

Manipulate PDF Content with the New ONLYOFFICE PDF Editor API

Exemple 2 : Supprimer tous les dessins

Cette macro analyse chaque page et supprime tous les objets graphiques — ou uniquement un type spécifique. Elle utilise la fonction GetAllDrawings() pour récupérer tous les éléments visuels de chaque page, et la fonction GetClassType() pour vérifier leur type avant de les supprimer.

La variable targetType, située en haut du code, détermine ce qui doit être supprimé. Définissez-la sur « all » pour tout supprimer, ou utilisez « shape », « image » ou « chart » pour cibler un type spécifique d’objets graphiques.

(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).");
})();

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.

Manipulate PDF Content with the New ONLYOFFICE PDF Editor API

Exemple 3 : Ajouter un filigrane à chaque page

Notre dernière macro crée une forme de filigrane personnalisable et l’insère sur chaque page du document. Elle utilise la fonction SetPosition() pour positionner la forme à des coordonnées précises sur la page et la fonction AddObject() pour l’ajouter à chaque page.

Toutes les propriétés clés sont définies sous forme de variables en haut du code, ce qui facilite l’ajustement du texte, des couleurs, de la taille de la police, de la position et de l’angle de rotation du filigrane.

(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.

Manipulate PDF Content with the New ONLYOFFICE PDF Editor API

Ces trois macros ne sont qu’un point de départ : la nouvelle API PDF offre bien d’autres possibilités pour automatiser vos flux de travail PDF. Vous pouvez combiner ces méthodes pour créer des macros plus avancées, adaptées à vos besoins spécifiques. Consultez la documentation de l’API et les exemples de macros dont les liens figurent ci-dessous pour trouver d’autres idées. Si vous avez des questions ou si vous souhaitez partager ce que vous avez créé, n’hésitez pas à nous contacter !

Créez votre compte ONLYOFFICE gratuit

Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.