حذف یادداشت‌ها، هایلایت‌ها یا علامت‌های جوهری ناخواسته از PDFها یک نیاز مکرر هنگام آماده‌سازی اسناد تمیز برای توزیع است. GroupDocs.Annotation Cloud SDK for Node.js یک کتابخانه قدرتمند مبتنی بر REST ارائه می‌دهد که به شما امکان مدیریت حاشیه‌نویسی‌های PDF را به‌صورت برنامه‌نویسی می‌دهد. این راهنما به شما نشان می‌دهد چگونه اشیای Annotation را از PDF با استفاده از REST در Node.JS به‌صورت گام‌به‌گام حذف کنید. شما یک مثال کامل کد، دستورات cURL معادل، نکات پیکربندی، و توصیه‌های بهترین روش را خواهید دید تا حذف حاشیه‌نویسی را در سرویس‌های خود یکپارچه کنید.

مثال کامل کارآمد برای حذف اشیاء حاشیه‌نویسی از PDF با استفاده از REST در Node.JS

این مثال نشان می‌دهد که چگونه یک 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}`);
})();

Note: این مثال کد عملکرد اصلی را نشان می‌دهد. قبل از استفاده از آن در پروژه خود، مطمئن شوید که مسیرهای فایل و مقادیر پیکربندی را به‌گونه‌ای به‌روز کنید که با محیط واقعی شما مطابقت داشته باشد، اطمینان حاصل کنید که تمام وابستگی‌های مورد نیاز به‌درستی نصب شده‌اند و به‌طور کامل در محیط توسعه خود تست کنید. اگر با مشکلی مواجه شدید، لطفاً به مستندات رسمی مراجعه کنید یا برای دریافت کمک به تیم پشتیبانی مراجعه کنید.

حذف حاشیه‌نویسی‌های PDF از طریق REST API با استفاده از cURL

در زیر دستورات cURL آمده است که همان جریان کار حذف حاشیه‌نویسی را از طریق GroupDocs.Annotation Cloud REST endpoints انجام می‌دهند.

# 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 مراجعه کنید.

نحوه حذف اشیاء حاشیه‌نویسی از PDF با REST در Node.JS

  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 مجموعه‌ای از اشیای حاشیه‌نویسی را برمی‌گرداند که از آن‌ها شناسه‌ها استخراج می‌شوند.

    const getAnnotationsRequest = new GroupDocsAnnotationCloud.GetAnnotationsRequest({
        fileInfo: fileInfo
    });
    const annotationsResult = await annotationsApi.getAnnotations(getAnnotationsRequest);
    
  4. حذف حاشیه‌نویسی‌ها - اگر شناسه‌هایی وجود داشته باشند، 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 یا آدرس دانلود رسمی دریافت کنید.

پس از نصب، کتابخانه را وارد کنید و یک شیء پیکربندی ایجاد کنید همان‌طور که در مثال کد نشان داده شده است:

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 برگردانده می‌شود. ارائه یک زیرمجموعه امکان حذف انتخابی را فراهم می‌کند.

تنظیمات اضافی مانند زمان‌سنجی درخواست‌ها و پیکربندی پروکسی در مستندات SDK موجود است؛ برای فهرست کامل، به مستندات رسمی مراجعه کنید.

بهترین روش‌ها برای حذف حاشیه‌نویسی‌های PDF از طریق REST

  • اعتبارسنجی شناسه‌های حاشیه‌نویسی - همیشه بررسی کنید که شناسه‌هایی که قصد حذف آن‌ها را دارید وجود داشته باشند؛ تلاش برای حذف شناسه‌های غیر موجود می‌تواند منجر به خطای 404 شود.
  • استفاده از HTTPS - تمام فراخوانی‌های API باید از طریق HTTPS انجام شوند تا اعتبارنامه‌ها و داده‌های سند شما محافظت شوند.
  • مدیریت فایل‌های بزرگ با بارگذاری قطعه‌ای - برای فایل‌های PDF بزرگ‌تر از ۱۰۰ مگابایت، ترجیحاً از نقطه انتهایی بارگذاری چندبخشی استفاده کنید تا از زمان‌سنجی جلوگیری شود.
  • ثبت لاگ پاسخ‌های API - شناسه‌های درخواست و پاسخ‌ها را برای مسیرهای حسابرسی و رفع مشکل آسان‌تر ذخیره کنید.
  • استفاده مجدد از توکن‌های دسترسی - توکن OAuth را تا زمان انقضا در کش نگه دارید تا بار احراز هویت کاهش یابد.

سوالات متداول

  • چگونه می‌توانم با GroupDocs.Annotation Cloud API احراز هویت کنم؟
    یک شناسه کلاینت (client ID) و رمز (secret) را از حساب GroupDocs خود دریافت کنید، سپس یک توکن دسترسی را از طریق نقطه انتهایی OAuth درخواست کنید. برای جزئیات، به مستندات رسمی مراجعه کنید.

  • آیا می‌توانم حاشیه‌نویسی‌های خاص را به جای همه حذف کنم؟
    بله، شناسه‌های حاشیه‌نویسی‌هایی که می‌خواهید حذف کنید را در DeleteAnnotationsRequest ارائه دهید. SDK پس از فراخوانی GetAnnotations فهرست شناسه‌های حاشیه‌نویسی را برمی‌گرداند.

  • چگونه می‌توانم اشیاء Annotation را از PDF با REST در Node.JS حذف کنم؟
    برای حذف اشیاء Annotation از PDF با استفاده از REST در Node.JS، از GroupDocs.Annotation Cloud SDK for Node.js استفاده کنید تا پس از دریافت شناسه‌های حاشیه‌نویسی، endpoint DeleteAnnotations را فراخوانی کنید. جریان کامل کار در مثال کد و بخش cURL این راهنما نشان داده شده است.

  • برای استفاده در تولید چه مجوزی لازم است؟
    برای تولید به یک مجوز پرداختی نیاز است. می‌توانید در حین ارزیابی، یک مجوز موقت را از صفحهٔ مجوز موقت دریافت کنید.

مطالعه بیشتر