在為分發準備乾淨的文件時,刪除 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 註釋的最佳實踐
- Validate Annotation IDs - 始終檢查您打算刪除的 ID 是否存在;嘗試刪除不存在的 ID 可能會導致 404 錯誤。
- Use HTTPS - 所有 API 呼叫必須透過 HTTPS 進行,以保護您的憑證和文件資料。
- Handle Large Files with Chunked Uploads - 對於大於 100 MB 的 PDF,建議使用多部份上傳端點,以避免逾時。
- Log API Responses - 儲存請求 ID 與回應,以便審計追蹤與更輕鬆的故障排除。
- Reuse Access Tokens - 將 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 端點,在取得 annotation ID 後執行。完整工作流程可在本指南的程式碼範例與 cURL 部分中看到。生產環境使用需要什麼授權?
生產環境需要付費授權。您可以在評估期間從臨時授權頁面獲取臨時授權。
