Видалення небажаних нотаток, виділених фрагментів або чорнильних позначок з PDF‑файлів є поширеною вимогою під час підготовки чистих документів для розповсюдження. GroupDocs.Annotation Cloud SDK for Node.js надає потужну бібліотеку на основі REST, яка дозволяє програмно керувати анотаціями PDF. У цьому посібнику показано, як видаляти об’єкти Annotation з PDF за допомогою REST у Node.JS крок за кроком. Ви побачите повний приклад коду, еквівалентні команди cURL, поради щодо налаштування та рекомендації кращих практик для інтеграції видалення анотацій у ваші сервіси.

Повний робочий приклад для видалення об’єктів анотацій з PDF за допомогою REST у Node.JS

Цей приклад демонструє, як завантажити PDF, видалити всі його анотації та завантажити очищений файл за допомогою GroupDocs.Annotation SDK.

const fs = require('fs');
const path = require('path');
const GroupDocsAnnotationCloud = require("@groupdocs/annotation-cloud");

// ==== Authentication =========================================================
const clientId = "YOUR_CLIENT_ID";
const clientSecret = "YOUR_CLIENT_SECRET";

const config = new GroupDocsAnnotationCloud.Configuration(clientId, clientSecret);
const annotationsApi = new GroupDocsAnnotationCloud.AnnotationsApi(config);
const storageApi = new GroupDocsAnnotationCloud.StorageApi(config);

// ==== Local & Remote file definitions =======================================
const localInputPath = path.resolve(__dirname, "input.pdf");
const localOutputPath = path.resolve(__dirname, "output.pdf");
const remoteFilePath = "input.pdf";

// ==== Main workflow ==========================================================
(async () => {
    // 1. Upload PDF to GroupDocs Cloud storage
    const fileBytes = fs.readFileSync(localInputPath);
    const uploadRequest = new GroupDocsAnnotationCloud.UploadFileRequest({
        path: remoteFilePath,
        file: fileBytes
    });
    await storageApi.uploadFile(uploadRequest);

// 2. Build FileInfo object for the uploaded PDF
    const fileInfo = new GroupDocsAnnotationCloud.FileInfo({
        filePath: remoteFilePath
    });

// 3. Retrieve all existing annotations
    const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({
        fileInfo: fileInfo
    });
    const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);
    const annotationIds = (annotationsResult.annotations || []).map(a => a.id);

// 4. Delete all annotations (if any)
    if (annotationIds.length > 0) {
        const deleteRequest = new GroupDocsAnnotationCloud.DeleteAnnotationsRequest({
            fileInfo: fileInfo,
            annotationIds: annotationIds
        });
        await annotationsApi.deleteAnnotations(deleteRequest);
    }

// 5. Download the cleaned PDF back to local storage
    const downloadRequest = new GroupDocsAnnotationCloud.DownloadFileRequest({
        path: remoteFilePath
    });
    const fileStream = await storageApi.downloadFile(downloadRequest);
    fs.writeFileSync(localOutputPath, fileStream);
    console.log(`All annotations removed. Clean file saved to ${localOutputPath}`);
})();

Примітка: Цей приклад коду демонструє основну функціональність. Перш ніж використовувати його у вашому проєкті, переконайтеся, що оновили всі шляхи до файлів та значення конфігурації відповідно до вашого реального середовища, перевірте, що всі необхідні залежності встановлені правильно, і ретельно протестуйте у вашому середовищі розробки. Якщо ви зіткнетеся з будь-якими проблемами, будь ласка, зверніться до офіційної документації або зв’яжіться з командою підтримки для отримання допомоги.

Видалення анотацій PDF через REST API за допомогою cURL

Нижче наведено команди cURL, які виконують той самий процес видалення анотацій через REST‑ендоінти GroupDocs.Annotation Cloud.

# 1. Obtain an access token
curl -X POST "https://api.groupdocs.cloud/v2.0/auth/token" \
     -H "Content-Type: application/json" \
     -d "{\"client_id\":\"YOUR_CLIENT_ID\",\"client_secret\":\"YOUR_CLIENT_SECRET\"}"
# 2. Upload the source PDF
curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/pdf" \
     --data-binary "@input.pdf"
# 3. Retrieve annotation IDs
curl -X GET "https://api.groupdocs.cloud/v2.0/annotation/annotations?filePath=input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# 4. Delete all retrieved annotations
curl -X DELETE "https://api.groupdocs.cloud/v2.0/annotation/annotations?filePath=input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d "{\"annotationIds\":[\"id1\",\"id2\"]}"
# 5. Download the cleaned PDF
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/input.pdf" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.pdf

Для повного списку кінцевих точок і параметрів перегляньте офіційну документацію API.

Як працює видалення об’єктів анотацій з PDF за допомогою REST у Node.JS

  1. Налаштування автентифікації - Клас Configuration створюється з вашими clientId та clientSecret, створюючи автентифікований контекст для всіх наступних викликів API.
    const config = new GroupDocsAnnotationCloud.Configuration(clientId, clientSecret);
    
  2. Завантаження файлу - UploadFileRequest надсилає локальні байти PDF у сховище GroupDocs Cloud. Метод storageApi.uploadFile обробляє передачу.
    const uploadRequest = new GroupDocsAnnotationCloud.UploadFileRequest({
        path: remoteFilePath,
        file: fileBytes
    });
    await storageApi.uploadFile(uploadRequest);
    
  3. Отримання анотацій - GetAnnotationsRequest створює об’єкт запиту з посиланням на FileInfo. Виклик annotationsApi.getAnnotations повертає колекцію об’єктів анотацій, з якої витягуються ідентифікатори.
    const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({
        fileInfo: fileInfo
    });
    const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);
    
  4. Видалення анотацій - Якщо існують ідентифікатори, заповнюється DeleteAnnotationsRequest і передається в annotationsApi.deleteAnnotations, який назавжди видаляє анотації зі збереженого PDF.
    const deleteRequest = new GroupDocsAnnotationCloud.DeleteAnnotationsRequest({
        fileInfo: fileInfo,
        annotationIds: annotationIds
    });
    await annotationsApi.deleteAnnotations(deleteRequest);
    
  5. Завантаження очищеного PDF - Нарешті, DownloadFileRequest отримує оновлений файл, а fs.writeFileSync записує його у локальну файлову систему.
    const downloadRequest = new GroupDocsAnnotationCloud.DownloadFileRequest({
        path: remoteFilePath
    });
    const fileStream = await storageApi.downloadFile(downloadRequest);
    fs.writeFileSync(localOutputPath, fileStream);
    

Для докладних визначень класів і методів зверніться до довідки API.

Встановлення та налаштування GroupDocs.Annotation Cloud SDK for Node.js

SDK розповсюджується як npm‑пакет. Встановіть його за допомогою команди нижче, а потім підключіть у вашому проєкті.

npm install groupdocs-annotation-cloud

Ви також можете завантажити останній пакет безпосередньо зі сторінки випусків на GitHub або з офіційного URL для завантаження.

Після встановлення імпортуйте бібліотеку та створіть об’єкт конфігурації, як показано у прикладі коду:

const GroupDocsAnnotationCloud = require("@groupdocs/annotation-cloud");
const config = new GroupDocsAnnotationCloud.Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");

Переконайтеся, що ваше середовище виконання відповідає вимогам до версії Node.js і що у вас є дійсний обліковий запис GroupDocs для отримання клієнтських облікових даних.

Параметри та налаштування видалення анотацій

SDK надає кілька параметрів, які ви можете налаштувати:

  • clientId / clientSecret - Облікові дані для автентифікації OAuth. Встановіть їх у конструкторі Configuration.
  • fileInfo.filePath - Шлях до PDF у сховищі GroupDocs Cloud. За потреби змініть його, якщо ви зберігаєте файли в іншій папці.
  • annotationIds - Масив ідентифікаторів, повернутих методом GetAnnotations. Передача підмножини дозволяє вибіркове видалення.

Додаткові налаштування, такі як тайм‑аути запитів та конфігурація проксі, доступні в документації SDK; перегляньте офіційну документацію для повного списку.

Кращі практики видалення анотацій PDF за допомогою REST

  • Перевіряти ідентифікатори анотацій - Завжди перевіряйте, чи існують ідентифікатори, які ви плануєте видалити; спроба видалити неіснуючі ідентифікатори може призвести до помилки 404.
  • Використовувати HTTPS - Усі виклики API повинні виконуватись через HTTPS, щоб захистити ваші облікові дані та дані документів.
  • Обробляти великі файли за допомогою завантаження частинами - Для PDF‑файлів розміром більше 100 МБ використовуйте multipart‑завантаження, щоб уникнути тайм‑аутів.
  • Логувати відповіді API - Зберігайте ідентифікатори запитів та відповіді для аудиту та спрощення усунення проблем.
  • Повторно використовувати токени доступу - Кешуйте OAuth‑токен до його закінчення, щоб зменшити навантаження на автентифікацію.

Поширені питання

  • Як автентифікуватися за допомогою GroupDocs.Annotation Cloud API?
    Отримайте client ID та secret зі свого облікового запису GroupDocs, потім запитайте access token через OAuth endpoint. Дивіться офіційну документацію для деталей.

  • Чи можу я видалити конкретні анотації замість усіх?
    Так, вкажіть ідентифікатори анотацій, які потрібно видалити, у DeleteAnnotationsRequest. SDK повертає список ідентифікаторів анотацій після виклику GetAnnotations.

  • Як можна видалити об’єкти Annotation з PDF за допомогою REST у Node.JS?
    Використовуйте GroupDocs.Annotation Cloud SDK for Node.js для виклику кінцевої точки DeleteAnnotations після отримання ідентифікаторів анотацій. Повний процес продемонстровано у прикладі коду та розділі cURL цього посібника.

  • Яка ліцензія потрібна для використання у продакшн?
    Для продакшн потрібна платна ліцензія. Ви можете отримати тимчасову ліцензію на сторінці тимчасової ліцензії під час оцінки.

Подальше читання