在准备干净的文档进行分发时,删除 PDF 中不需要的注释、突出显示或墨迹是常见需求。GroupDocs.Annotation Cloud SDK for Node.js 提供了一个强大的基于 REST 的库,能够以编程方式管理 PDF 注释。本指南将逐步演示如何在 Node.JS 中使用 REST 删除 PDF 的 Annotation 对象。您将看到完整的代码示例、等效的 cURL 命令、配置技巧以及将注释删除集成到服务中的最佳实践建议。
完整工作示例:使用 REST 在 Node.JS 中删除 PDF 的注释对象
此示例演示如何上传 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}`);
})();
注意: 这段代码示例演示了核心功能。在将其用于项目之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中进行彻底测试。如果遇到任何问题,请参阅官方文档或联系支持团队获取帮助。
使用 cURL 通过 REST API 删除 PDF 注释
以下是通过 GroupDocs.Annotation Cloud REST 端点执行相同注释删除工作流的 cURL 命令。
# 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 文档。
使用 REST 在 Node.JS 中删除 PDF 注释对象的工作原理
身份验证设置 -
Configuration类使用您的clientId和clientSecret实例化,为后续所有 API 调用创建已认证的上下文。const config = new GroupDocsAnnotationCloud.Configuration(clientId, clientSecret);文件上传 -
UploadFileRequest将本地 PDF 字节发送到 GroupDocs Cloud 存储。storageApi.uploadFile方法负责传输。const uploadRequest = new GroupDocsAnnotationCloud.UploadFileRequest({ path: remoteFilePath, file: fileBytes }); await storageApi.uploadFile(uploadRequest);检索批注 -
GetAnnotationsRequest使用FileInfo引用构建请求对象。annotationsApi.getAnnotations调用返回批注对象集合,可从中提取 ID。const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({ fileInfo: fileInfo }); const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);删除批注 - 如果存在任何 ID,则填充
DeleteAnnotationsRequest并传递给annotationsApi.deleteAnnotations,该方法会永久删除存储在 PDF 中的批注。const deleteRequest = new GroupDocsAnnotationCloud.DeleteAnnotationsRequest({ fileInfo: fileInfo, annotationIds: annotationIds }); await annotationsApi.deleteAnnotations(deleteRequest);下载清理后的 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 包的形式分发。使用以下命令进行安装,然后在项目中 require 它。
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返回的 ID 数组。提供子集可实现选择性删除。
SDK 文档中提供了请求超时和代理配置等其他设置;完整列表请参阅 官方文档。
通过 REST 删除 PDF 注释的最佳实践
- 验证注释 ID - 始终检查您要删除的 ID 是否存在;尝试删除不存在的 ID 可能会导致 404 错误。
- 使用 HTTPS - 所有 API 调用必须通过 HTTPS 进行,以保护您的凭据和文档数据。
- 使用分块上传处理大文件 - 对于大于 100 MB 的 PDF,建议使用多部分上传端点,以避免超时。
- 记录 API 响应 - 存储请求 ID 和响应,以便审计追踪和更轻松的故障排除。
- 重用访问令牌 - 缓存 OAuth 令牌直至过期,以减少身份验证开销。
常见问题
如何使用 GroupDocs.Annotation Cloud API 进行身份验证?
从您的 GroupDocs 帐户获取客户端 ID 和密钥,然后通过 OAuth 端点请求访问令牌。请参阅官方文档了解详细信息。我可以删除特定的批注而不是全部吗?
是的,在 DeleteAnnotationsRequest 中提供您想要删除的批注 ID。SDK 在调用 GetAnnotations 后返回批注 ID 列表。如何使用 REST 在 Node.JS 中删除 PDF 的 Annotation 对象?
使用 GroupDocs.Annotation Cloud SDK for Node.js 调用 DeleteAnnotations 端点,在获取注释 ID 后进行删除。完整的工作流程在本指南的代码示例和 cURL 部分中演示。生产使用需要什么许可证? 生产环境需要付费许可证。您可以在评估期间从临时许可证页面获取临时许可证。
