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. アノテーション ID の取得
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 - GroupDocs Cloud ストレージ内の PDF のパスです。別のフォルダーにファイルを保存している場合はこれを調整してください。
  • 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 エンドポイントを介してアクセストークンをリクエストします。詳細は 公式ドキュメント をご覧ください。

  • 特定のアノテーションだけを削除できますか?
    はい、削除したいアノテーションの ID を DeleteAnnotationsRequest に指定してください。SDK は GetAnnotations 呼び出しの後にアノテーション ID のリストを返します。

  • Node.JS の REST で PDF から Annotation オブジェクトを削除するにはどうすればよいですか?
    GroupDocs.Annotation Cloud SDK for Node.js を使用して、アノテーション ID を取得した後に DeleteAnnotations エンドポイントを呼び出します。このガイドのコード例と cURL セクションでフルワークフローが示されています。

  • 本番使用にはどのようなライセンスが必要ですか?
    本番環境では有料ライセンスが必要です。評価中は一時ライセンスページから取得できます。

Further Reading