在准备干净的文档进行分发时,删除 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 注释对象的工作原理

  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 调用返回批注对象集合,可从中提取 ID。

    const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({
        fileInfo: fileInfo
    });
    const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);
    
  4. 删除批注 - 如果存在任何 ID,则填充 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 包的形式分发。使用以下命令进行安装,然后在项目中 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 部分中演示。

  • 生产使用需要什么许可证? 生产环境需要付费许可证。您可以在评估期间从临时许可证页面获取临时许可证。

进一步阅读