Удаление нежелательных заметок, выделений или чернильных пометок из 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);
  1. Загрузка файла – UploadFileRequest отправляет локальные байты PDF в хранилище GroupDocs Cloud. Метод storageApi.uploadFile обрабатывает передачу.
const uploadRequest = new GroupDocsAnnotationCloud.UploadFileRequest({
    path: remoteFilePath,
    file: fileBytes
});
await storageApi.uploadFile(uploadRequest);
  1. Получение аннотаций – GetAnnotationsRequest формирует объект запроса с ссылкой на FileInfo. Вызов annotationsApi.getAnnotations возвращает коллекцию объектов аннотаций, из которой извлекаются идентификаторы.
const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({
    fileInfo: fileInfo
});
const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);
  1. Удаление аннотаций – Если существуют идентификаторы, DeleteAnnotationsRequest заполняется и передаётся в annotationsApi.deleteAnnotations, который навсегда удаляет аннотации из сохранённого PDF.
const deleteRequest = new GroupDocsAnnotationCloud.DeleteAnnotationsRequest({
    fileInfo: fileInfo,
    annotationIds: annotationIds
});
await annotationsApi.deleteAnnotations(deleteRequest);
  1. Скачивание очищенного 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. См. official documentation для подробностей.

  • Могу ли я удалить конкретные аннотации вместо всех?
    Да, укажите идентификаторы аннотаций, которые хотите удалить, в DeleteAnnotationsRequest. SDK возвращает список идентификаторов аннотаций после вызова GetAnnotations.

  • Как удалить объекты Annotation из PDF с помощью REST в Node.JS?
    Используйте GroupDocs.Annotation Cloud SDK для Node.js, чтобы вызвать endpoint DeleteAnnotations после получения идентификаторов аннотаций. Полный процесс продемонстрирован в примере кода и разделе cURL этого руководства.

  • Какова лицензия, необходима для использования в продакшене?
    Для продакшена требуется платная лицензия. Вы можете получить временную лицензию на странице temporary license page во время оценки.

Дополнительное чтение