Java を使用して DOCX ドキュメントのコメントを取得する方法

        最新のドキュメント コラボレーション ツールは、これまでよりも厳しい期限内にプロジェクトを最初から最後まで推進するのに役立ちます。デジタル化以前のプロジェクト コラボレーションは、配布前に主要なレポートやメモを修正/改善するために手動のマークアップと注釈に依存していましたが、現代のチームは、業界を超えてアクセス可能なシンプルな修正ツールを使用して、同じ基本的な目標などを達成できます。DOCX ファイル内のすべてのユーザー。チーム メンバーは誰でも、SharePoint サイト ドライブ内の DOCX ドキュメントに提案、変更、コールアウトを追加できるため、最終製品を公開して関係者と共有するのにかかる時間を大幅に短縮できます。

        Microsoft の OpenXML ドキュメント形式は、舞台裏でこのチーム指向のファイル操作を可能にします。DOCX 形式は、複数の XML ベースのファイルで構成される zip ファイルとして構造化されているため、コメントやその他のリビジョンはドキュメントの主要なコンテンツから物理的に分離されており、これらの個別のファイル間の関係を定義するデータは、独自のフォルダーの中央に保存されます。 。  

        言い換えれば、共同作業用の DOCX ドキュメントを開いたときに表示されるコメントと改訂は、独自のファイルに保存されているドキュメントのテキスト本文と通信する別のファイルの一部です。このファイル構造の分割により、最終的には、リビジョンの追加、削除、解決を行うときや、コラボレーション機能を完全にオンまたはオフにすることを選択するときでも、慣れ親しんだ流動的で動的なエクスペリエンスが作成されます。

DOCX ドキュメント内のコメントはXMLベースのファイルに保存されるため、ドキュメントの他のコンポーネントとは関係なく、手動またはプログラムでアクセスできます。抽出された有用なレビューメタデータ(レビュー テキスト、著者名、日付などを含む) は、関連付けられている元のコンテンツとは独立して分析できます。この種のデータマイニングは、必ずしも一度に役立つわけではありませんが、同じ種類の複数の文書 (定期レポートやメモなど) からコメントを時間をかけて蓄積し、その情報を使用して全体の内容をよりよく理解することには明らかな利点があります。共同プロセスの利点。豊富なレビュー メタデータがすぐに利用できるため、NLP分析を適用して、隔週メモの特定の部分についてチームが何を考えているかをより深く理解することができます。また、特定のトピックについてコラボレーションする頻度を確認したり、最も頻繁に投稿する人が誰であるかなどについて詳しく知ることもできます。

        このような洞察が十分に興味深いものである場合、課題は、合理的に短い時間で複数のドキュメントにわたって組織的かつ効率的な方法で情報を抽出することになります。Open XML ファイルは .zip ファイルに変換して個別に抽出できます (またはC#または Visual Basic で文書化されたコード例を使用して個別にアクセスできます) が、これらの方法はほとんど実用的ではないか、ファイル配列でより大きな実用的な用途に使用するには範囲が限定されすぎます。 。代わりに、必要なデータを抽出して、シンプルで整理された人間が判読可能な形式で返す、完全に実装されたプログラミング ソリューションに依存する方がはるかに現実的です。これは、専用のドキュメント変換 API に最適な役割です。

デモンストレーション

        この記事の残りの部分では、DOCX ファイルからコメント テキストとコメント メタデータを取得するために設計された 2 つの API を紹介します。どちらのソリューションも、ページの下の方にあるすぐに実行できる Java コード例からコピーすることで (無料の API キーを使用して) 簡単に使用でき、どちらも同じ基本機能のわずかに異なるバリエーションを実行します以下に両方のソリューションについて簡単に説明します。

1. DOCX ドキュメントからフラット リストとしてコメントを取得します

        この API は、元のコメントに添付された返信サブコメントを示す階層を持たずに、コメントとコメント注釈を返します。元のコメントへの返信は、応答オブジェクト内のブール値によってIsReply区別されます。次の JSON 応答本文の例を参照してください。

{
  "Successful": true,
  "Comments": [
    {
      "Path": "string",
      "Author": "string",
      "AuthorInitials": "string",
      "CommentText": "string",
      "CommentDate": "2023-07-27T15:15:44.278Z",
      "IsTopLevel": true,
      "IsReply": true,
      "ParentCommentPath": "string",
      "Done": true
    }
  ],
  "CommentCount": 0
}

2. DOCX ドキュメントからアノテーションを階層的に取得する

        この API は、Comments および Comments on Comments オブジェクトを返します。このオブジェクトに関連付けられた Comments の下に Reply サブコメントがネストされていますこれは、API 応答本文内の返信コメントと元のコメントの関係を区別するのに役立ちます。次の JSON 応答本文の例を参照してください。

{
  "Successful": true,
  "Comments": [
    {
      "Path": "string",
      "Author": "string",
      "AuthorInitials": "string",
      "CommentText": "string",
      "CommentDate": "2023-07-27T15:16:28.931Z",
      "ReplyChildComments": [
        {
          "Path": "string",
          "Author": "string",
          "AuthorInitials": "string",
          "CommentText": "string",
          "CommentDate": "2023-07-27T15:16:28.931Z",
          "IsTopLevel": true,
          "IsReply": true,
          "ParentCommentPath": "string",
          "Done": true
        }
      ],
      "Done": true
    }
  ],
  "TopLevelCommentCount": 0
}

まず Maven をインストールすると、Java で API 呼び出しの構築を開始できます。pom.xml のリポジトリに次の参照を追加します。

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

次に、pom.xml に依存関係への参照を追加します。

<dependencies>
<dependency>
    <groupId>com.github.Cloudmersive</groupId>
    <artifactId>Cloudmersive.APIClient.Java</artifactId>
    <version>v4.25</version>
</dependency>
</dependencies>

インストールしたら、次の例 (インポート クラスを含む) をコピーして、DOCX コメントをフラット リストとして取得できます。

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditDocumentApi apiInstance = new EditDocumentApi();
GetDocxGetCommentsRequest reqConfig = new GetDocxGetCommentsRequest(); // GetDocxGetCommentsRequest | Document input request
try {
    GetDocxCommentsResponse result = apiInstance.editDocumentDocxGetComments(reqConfig);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EditDocumentApi#editDocumentDocxGetComments");
    e.printStackTrace();
}

次の例 (インポート クラスを含む) をコピーして、DOCX コメントを階層的に取得できます。

// Import classes:
//import com.cloudmersive.client.invoker.ApiClient;
//import com.cloudmersive.client.invoker.ApiException;
//import com.cloudmersive.client.invoker.Configuration;
//import com.cloudmersive.client.invoker.auth.*;
//import com.cloudmersive.client.EditDocumentApi;

ApiClient defaultClient = Configuration.getDefaultApiClient();

// Configure API key authorization: Apikey
ApiKeyAuth Apikey = (ApiKeyAuth) defaultClient.getAuthentication("Apikey");
Apikey.setApiKey("YOUR API KEY");
// Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
//Apikey.setApiKeyPrefix("Token");

EditDocumentApi apiInstance = new EditDocumentApi();
GetDocxGetCommentsHierarchicalRequest reqConfig = new GetDocxGetCommentsHierarchicalRequest(); // GetDocxGetCommentsHierarchicalRequest | Document input request
try {
    GetDocxCommentsHierarchicalResponse result = apiInstance.editDocumentDocxGetCommentsHierarchical(reqConfig);
    System.out.println(result);
} catch (ApiException e) {
    System.err.println("Exception when calling EditDocumentApi#editDocumentDocxGetCommentsHierarchical");
    e.printStackTrace();
}

DOCX コメント/注釈メタ​​データを簡単かつ自動的に取得し、その情報を他のアプリケーションやワークフローにシームレスに解析できるようになりました。

おすすめ

転載: blog.csdn.net/qq_28245905/article/details/132115794