Eliminar notas, resaltados o marcas de tinta no deseadas de los PDFs es un requisito frecuente al preparar documentos limpios para su distribución. GroupDocs.Annotation Cloud SDK for Node.js proporciona una poderosa biblioteca basada en REST que le permite gestionar anotaciones de PDF de forma programática. Esta guía le muestra cómo eliminar objetos de anotación de PDF con REST en Node.JS, paso a paso. Verá un ejemplo de código completo, comandos cURL equivalentes, consejos de configuración y recomendaciones de buenas prácticas para integrar la eliminación de anotaciones en sus servicios.
Ejemplo completo de trabajo para eliminar objetos de anotación de PDF con REST en Node.JS
Este ejemplo muestra cómo subir un PDF, eliminar todas sus anotaciones y descargar el archivo limpio usando el SDK de GroupDocs.Annotation.
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 ejemplo de código muestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar cualquier ruta de archivo y valores de configuración para que coincidan con su entorno real, verifique que todas las dependencias requeridas estén instaladas correctamente y pruebe exhaustivamente en su entorno de desarrollo. Si encuentra algún problema, consulte la documentación oficial o póngase en contacto con el equipo de soporte para obtener ayuda.
Eliminar anotaciones PDF mediante API REST usando cURL
A continuación se presentan los comandos cURL que ejecutan el mismo flujo de eliminación de anotaciones a través de los endpoints REST de 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 obtener una lista completa de los puntos finales y parámetros, consulte la documentación oficial de la API.
Cómo eliminar objetos de anotación de PDF con REST en Node.JS funciona
- Configuración de autenticación - La clase
Configurationse instancia con suclientIdyclientSecret, creando un contexto autenticado para todas las llamadas API posteriores.
const config = new GroupDocsAnnotationCloud.Configuration(clientId, clientSecret);
- Carga de archivo -
UploadFileRequestenvía los bytes del PDF local al almacenamiento de GroupDocs Cloud. El métodostorageApi.uploadFilemaneja la transferencia.
const uploadRequest = new GroupDocsAnnotationCloud.UploadFileRequest({
path: remoteFilePath,
file: fileBytes
});
await storageApi.uploadFile(uploadRequest);
- Recuperar anotaciones -
GetAnnotationsRequestcrea un objeto de solicitud con una referenciaFileInfo. La llamadaannotationsApi.getAnnotationsdevuelve una colección de objetos de anotación, de los cuales se extraen los IDs.
const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({
fileInfo: fileInfo
});
const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);
- Eliminar anotaciones - Si existen IDs, se rellena
DeleteAnnotationsRequesty se pasa aannotationsApi.deleteAnnotations, que elimina permanentemente las anotaciones del PDF almacenado.
const deleteRequest = new GroupDocsAnnotationCloud.DeleteAnnotationsRequest({
fileInfo: fileInfo,
annotationIds: annotationIds
});
await annotationsApi.deleteAnnotations(deleteRequest);
- Descargar PDF limpio - Finalmente,
DownloadFileRequestrecupera el archivo actualizado, yfs.writeFileSynclo escribe en el sistema de archivos local.
const downloadRequest = new GroupDocsAnnotationCloud.DownloadFileRequest({
path: remoteFilePath
});
const fileStream = await storageApi.downloadFile(downloadRequest);
fs.writeFileSync(localOutputPath, fileStream);
Para obtener definiciones detalladas de clases y métodos, consulte la referencia de API.
Instalación y Configuración GroupDocs.Annotation Cloud SDK for Node.js
El SDK se distribuye como un paquete npm. Instálalo con el comando a continuación y luego requiérelo en tu proyecto.
npm install groupdocs-annotation-cloud
También puedes descargar el paquete más reciente directamente desde la página de lanzamientos de GitHub o la URL de descarga oficial.
Después de la instalación, importe la biblioteca y cree un objeto de configuración como se muestra en el ejemplo de código:
const GroupDocsAnnotationCloud = require("@groupdocs/annotation-cloud");
const config = new GroupDocsAnnotationCloud.Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
Asegúrese de que su entorno de ejecución cumpla con los requisitos de versión de Node.js y de que tenga una cuenta válida de GroupDocs para obtener las credenciales del cliente.
Opciones y Configuraciones para la Eliminación de Anotaciones
El SDK expone varios parámetros que puedes ajustar:
- clientId / clientSecret - Credenciales para la autenticación OAuth. Establécelas en el constructor
Configuration. - fileInfo.filePath - La ruta del PDF en el almacenamiento de GroupDocs Cloud. Ajusta esto si almacenas los archivos en una carpeta diferente.
- annotationIds - Una matriz de IDs devuelta por
GetAnnotations. Proporcionar un subconjunto permite la eliminación selectiva.
Configuraciones adicionales, como los tiempos de espera de solicitud y la configuración del proxy, están disponibles en la documentación del SDK; consulte la documentación oficial para obtener la lista completa.
Mejores prácticas para eliminar anotaciones PDF mediante REST
- Validar IDs de anotaciones - Siempre verifique que los IDs que pretende eliminar existan; intentar eliminar IDs que no existen puede provocar un error 404.
- Usar HTTPS - Todas las llamadas a la API deben realizarse mediante HTTPS para proteger sus credenciales y los datos del documento.
- Manejar archivos grandes con cargas fragmentadas - Para PDFs de más de 100 MB, prefiera el endpoint de carga multipart para evitar tiempos de espera.
- Registrar respuestas de la API - Guarde los IDs de solicitud y las respuestas para auditorías y una solución de problemas más sencilla.
- Reutilizar tokens de acceso - Almacene en caché el token OAuth hasta que expire para reducir la sobrecarga de autenticación.
Preguntas comunes
¿Cómo me autentico con la API de GroupDocs.Annotation Cloud?
Obtenga un ID de cliente y un secreto de su cuenta de GroupDocs, luego solicite un token de acceso a través del endpoint OAuth. Consulte la documentación oficial para más detalles.¿Puedo eliminar anotaciones específicas en lugar de todas?
Sí, proporcione los IDs de las anotaciones que desea eliminar en el DeleteAnnotationsRequest. El SDK devuelve la lista de IDs de anotaciones después de una llamada a GetAnnotations.¿Cómo puedo eliminar objetos de anotación de PDF con REST en Node.JS?
Utilice el GroupDocs.Annotation Cloud SDK for Node.js para llamar al endpoint DeleteAnnotations después de obtener los IDs de anotación. El flujo completo se muestra en el ejemplo de código y la sección cURL de esta guía.¿Qué licencia se requiere para uso en producción?
Se necesita una licencia paga para producción. Puede obtener una licencia temporal en la página de licencia temporal mientras evalúa.
