Remover notas, realces ou marcas de tinta indesejadas de PDFs é uma necessidade frequente ao preparar documentos limpos para distribuição. GroupDocs.Annotation Cloud SDK for Node.js fornece uma poderosa biblioteca baseada em REST que permite gerenciar anotações de PDF programaticamente. Este guia mostra como remover objetos de Anotação de PDFs usando REST no Node.JS, passo a passo. Você verá um exemplo de código completo, comandos cURL equivalentes, dicas de configuração e recomendações de boas práticas para integrar a remoção de anotações em seus serviços.

Exemplo completo em funcionamento para remover objetos de anotação de PDF com REST em Node.JS

Este exemplo demonstra como fazer upload de um PDF, excluir todas as suas anotações e baixar o arquivo limpo usando o 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}`);
})();

Nota: Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar quaisquer caminhos de arquivos e valores de configuração para corresponder ao seu ambiente real, verifique se todas as dependências necessárias estão devidamente instaladas e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter assistência.

Excluir Anotações de PDF via API REST usando cURL

A seguir estão os comandos cURL que executam o mesmo fluxo de remoção de anotações através dos endpoints REST do 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

Para obter uma lista completa de endpoints e parâmetros, consulte a documentação oficial da API.

Como remover objetos de anotação de PDF com REST em Node.JS funciona

  1. Configuração de Autenticação - A classe Configuration é instanciada com seu clientId e clientSecret, criando um contexto autenticado para todas as chamadas subsequentes da API.
    const config = new GroupDocsAnnotationCloud.Configuration(clientId, clientSecret);
    
  2. Upload de Arquivo - UploadFileRequest envia os bytes do PDF local para o armazenamento do GroupDocs Cloud. O método storageApi.uploadFile lida com a transferência.
    const uploadRequest = new GroupDocsAnnotationCloud.UploadFileRequest({
        path: remoteFilePath,
        file: fileBytes
    });
    await storageApi.uploadFile(uploadRequest);
    
  3. Recuperar Anotações - GetAnnotationsRequest cria um objeto de requisição com uma referência FileInfo. A chamada annotationsApi.getAnnotations retorna uma coleção de objetos de anotação, dos quais os IDs são extraídos.
    const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({
        fileInfo: fileInfo
    });
    const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);
    
  4. Excluir Anotações - Se houver IDs, DeleteAnnotationsRequest é preenchido e passado para annotationsApi.deleteAnnotations, que remove permanentemente as anotações do PDF armazenado.
    const deleteRequest = new GroupDocsAnnotationCloud.DeleteAnnotationsRequest({
        fileInfo: fileInfo,
        annotationIds: annotationIds
    });
    await annotationsApi.deleteAnnotations(deleteRequest);
    
  5. Baixar PDF Limpo - Por fim, DownloadFileRequest obtém o arquivo atualizado, e fs.writeFileSync grava‑o no sistema de arquivos local.
    const downloadRequest = new GroupDocsAnnotationCloud.DownloadFileRequest({
        path: remoteFilePath
    });
    const fileStream = await storageApi.downloadFile(downloadRequest);
    fs.writeFileSync(localOutputPath, fileStream);
    

Para definições detalhadas de classes e métodos, consulte a referência da API.

Instalando e Configurando GroupDocs.Annotation Cloud SDK for Node.js

O SDK é distribuído como um pacote npm. Instale‑o com o comando abaixo e, em seguida, importe‑o em seu projeto.

npm install groupdocs-annotation-cloud

Você também pode baixar o pacote mais recente diretamente da página de lançamentos do GitHub ou do URL oficial de download.

Após a instalação, importe a biblioteca e crie um objeto de configuração conforme mostrado no exemplo de código:

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

Certifique-se de que seu ambiente de tempo de execução atenda aos requisitos de versão do Node.js e de que você possua uma conta válida do GroupDocs para obter as credenciais do cliente.

Opções e Configurações de Remoção de Anotações

O SDK expõe vários parâmetros que você pode ajustar:

  • clientId / clientSecret - Credenciais para autenticação OAuth. Defina‑as no construtor Configuration.
  • fileInfo.filePath - O caminho do PDF no armazenamento GroupDocs Cloud. Ajuste isso se você armazenar arquivos em uma pasta diferente.
  • annotationIds - Uma matriz de IDs retornados por GetAnnotations. Fornecer um subconjunto permite exclusão seletiva.

Configurações adicionais, como tempos limite de solicitação e configuração de proxy, estão disponíveis na documentação do SDK; veja a documentação oficial para a lista completa.

Melhores práticas para remover anotações de PDF via REST

  • Validar IDs de Anotação - Sempre verifique se os IDs que você pretende excluir existem; tentar excluir IDs inexistentes pode causar um erro 404.
  • Usar HTTPS - Todas as chamadas de API devem ser feitas via HTTPS para proteger suas credenciais e os dados do documento.
  • Lidar com Arquivos Grandes usando Uploads em Blocos - Para PDFs maiores que 100 MB, prefira o endpoint de upload multipart para evitar timeouts.
  • Registrar Respostas da API - Armazene IDs de requisição e respostas para trilhas de auditoria e facilitar a solução de problemas.
  • Reutilizar Tokens de Acesso - Cache o token OAuth até que expire para reduzir a sobrecarga de autenticação.

Perguntas Frequentes

  • Como faço a autenticação com a API do GroupDocs.Annotation Cloud?
    Obtenha um ID de cliente e um segredo da sua conta GroupDocs, então solicite um token de acesso via o endpoint OAuth. Consulte a documentação oficial para mais detalhes.

  • Posso excluir anotações específicas em vez de todas?
    Sim, forneça os IDs das anotações que deseja remover no DeleteAnnotationsRequest. O SDK retorna a lista de IDs de anotações após uma chamada GetAnnotations.

  • Como posso remover objetos de Anotação de PDF com REST em Node.JS?
    Use o GroupDocs.Annotation Cloud SDK for Node.js para chamar o endpoint DeleteAnnotations após recuperar os IDs das anotações. O fluxo completo é demonstrado no exemplo de código e na seção cURL deste guia.

  • Qual licença é necessária para uso em produção?
    É necessária uma licença paga para produção. Você pode adquirir uma licença temporária na página de licença temporária durante a avaliação.

Leitura adicional