PDFをオンラインで編集する

データの機密性のため、PDF ファイルから機密情報を削除する必要があるため、通常は PDF ドキュメントの特定のページ領域から編集 (テキスト、画像などを削除) します。ただし、大量のドキュメントを扱う場合は、この要件を満たすために API を使用する必要があります。

この記事では、Aspose.PDF Cloud SDK for JavaRedactionAnnotationクラスを使用してPDFをオンラインで編集する手順について説明します。

SDKのインストール

Aspose.PDF Cloud SDK for Java は、Java 開発者向けのプログラミング API であり、Aspose.PDF Cloud API 上に構築されています。当社の Cloud API は、特別なソフトウェアをインストールすることなく、どのプラットフォームからでも使用できます。ただし、SDK を使用するには、まずシステムにインストールする必要があります。

Cloud SDK は、Maven および GitHub からダウンロードできます。次に、pom.xml ファイルに次の詳細を追加して、Aspose.Pdf.jar をダウンロードし、Maven ビルド プロジェクトで使用します。

<repositories>
 <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>https://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>
<dependencies>
 <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-pdf-cloud</artifactId>
        <version>21.1.0</version>
        <scope>compile</scope>
    </dependency>
 </dependencies>

SDK をインストールしたら、次のステップは、パーソナライズされたクライアント ID とクライアント シークレットを取得することです。Aspose.Cloud ダッシュボード にアクセスし、GitHub または Google アカウントをお持ちの場合は、サインアップするだけです。そうでない場合は、新しいアカウントの作成 ボタンをクリックして、必要な情報を入力します。資格情報を使用してダッシュボードにログインし、[アプリケーション] セクションを展開します。クライアント資格情報セクションまで下にスクロールすると、クライアント ID とクライアント シークレットの詳細が表示されます。

Javaを使用して編集注釈を追加する

以下のセクションでは、Aspose.PDF Cloud SDK for Java を使用して PDF ファイルのコンテンツを消去するための長方形のボックスを追加する手順について説明します。

  • まず、Aspose.Cloud ダッシュボードから取得した ClientId と ClientSecret の詳細を渡しながら、PdfApi のオブジェクトを作成する必要があります。
  • 次に、注釈を追加するページ上の領域を指定するために、Rectangle クラスのオブジェクトを作成します。
  • 3 番目に、AnnotationFlags 列挙からデフォルト値を選択し、それを AnnotationFlags 型のリストに追加します。
  • ここで、RedactionAnnotation クラスのインスタンスを作成し、setRect(…) メソッドを使用して長方形領域を設定します。
  • setHorizontalAlignment(…) メソッドを使用して水平方向の配置を設定し、HorizontalAlignment 列挙から Center を選択します。
  • Annotation 内の色を塗りつぶすには、setFillColor(…) メソッドを使用して Color オブジェクトを渡します。
  • setModified(…) メソッドを使用して、注釈の最終更新日を設定します。
  • 最後から2番目に、RedactionAnnotation タイプのリストを作成し、このリストに RedactAnnotation オブジェクトを追加します。
  • 最後に、PdfApi の postPageRedactionAnnotations(…) メソッドを呼び出し、ソース ファイル名、注釈を追加するページ番号を渡します。また、RedactionAnnotation リストを引数として渡して、編集プロセスを開始します。
// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String sourcePDF = "PdfWithTable.pdf";

// 注釈を配置するPDFのページ
int pageNumber = 1;

// 編集注釈領域を指定するための長方形オブジェクトを作成する
// 領域はページの左下から計算されます
Rectangle rect = new Rectangle()

// 測定単位はポイントです
  .LLX(100.)
  .LLY(700.)
  .URX(200.)
  .URY(600.);

// AnnotationFlags配列を作成する
List<AnnotationFlags> flags = new ArrayList<>();

// AnnotationFlagをデフォルトに設定する
flags.add(AnnotationFlags.DEFAULT);

// ポイントのArrayListを作成する
List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));

// 編集注釈オブジェクトを作成する
RedactionAnnotation annotation = new RedactionAnnotation();

// 注釈の名前を設定します。 
// 文書に複数の注釈がある場合に便利です
annotation.setName("Name");
// 注釈編集の長方形領域を設定する
annotation.setRect(rect);
annotation.setFlags(flags);

// 水平方向の配置を中央に設定する
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);

// ZIndex を 1 に設定します。 
annotation.setZindex(1);

// SlateBlue の色を 16 進コードで定義する
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// 注釈の塗りつぶし色を指定する
annotation.setFillColor(color);

// 注釈が最後に変更された日時。
annotation.setModified("05/21/2021 12:00:00.000 AM");

// 座標を指定する8xNの数値の配列を設定する 
// 削除する予定のコンテンツ領域。
annotation.setQuadPoint(points);
			        
// RedactAnnotation タイプの List オブジェクトを作成する
List<RedactionAnnotation> annotations = new ArrayList<>();

// 先ほど作成した Annotations オブジェクトを RedactAnnotation 配列に追加します。
annotations.add(annotation);

// PDF ドキュメントに RedactAnnotation を追加する
AsposeResponse response = pdfApi.postPageRedactionAnnotations(sourcePDF, pageNumber, annotations, null, null, true);
assertEquals(200, (int)response.getCode());
編集された PDF 文書

画像 1: PDF ファイルに追加された編集注釈。

上記の例で使用したサンプルファイルを以下からダウンロードしてください。

ページ編集注釈を読む

Aspose.PDF Cloud SDK for Java は、PDF ドキュメント内の既存の Redact 注釈に関する情報を読み取る機能も提供します。以下の手順では、Java を使用して注釈の詳細を読み取る方法を定義します。

// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String sourcePDF = "PdfWithTable.pdf";

// ドキュメント編集注釈を取得する
RedactionAnnotationsResponse responseAnnotations = pdfApi.getPageRedactionAnnotations(sourcePDF,1, null, null);
assertEquals(200, (int)responseAnnotations.getCode());

// ドキュメント内で利用可能な注釈の数を印刷する
System.out.println(responseAnnotations.getAnnotations().getList().size());

既存の編集注釈を更新する

PDF ドキュメントにすでに Redaction 注釈が含まれている場合は、API を使用してそれらを更新することもできます。PDF ドキュメント内の既存の注釈を更新する方法の詳細を以下に示します。

  • クライアント ID とクライアント シークレットの詳細を引数として渡しながら、PdfApi のインスタンスを作成します。
  • 注釈の領域を定義するために、Rectangle オブジェクトを作成します。これはドキュメントの左下から計算され、デフォルトの単位はポイントです。
  • AnnotationFlags リストを作成し、リストに AnnotationFlags.DEFAULT 値を追加します。
  • ここで、RedactionAnnotation オブジェクトを作成し、setRect(…) メソッドを呼び出して注釈の長方形領域を定義する必要があります。
  • アノテーションの最終更新日を設定するには、setModified(…) メソッドを使用します。
  • PdfApi 呼び出しの getDocumentRedactionAnnotations(…) メソッドを呼び出して、ドキュメントから注釈のリストを読み取ります。
  • responseAnnotations.getAnnotations().getList().get(0).getId() を使用して特定の Annotation オブジェクトを取得します。
  • 最後に、PdfApi クラスのメソッド putRedactionAnnotation(…) を呼び出して、PDF ファイル内の既存の Redaction Annotation を更新します。
// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String sourcePDF = "PdfWithAnnotations.pdf";	        
			        
// 注釈用の長方形領域を作成する  
Rectangle rect = new Rectangle()
  .LLX(200.)
  .LLY(120.)
  .URX(150.)
  .URY(100.);

List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

List<Point> points = new ArrayList<>();
points.add(new Point().X(10.).Y(40.));
points.add(new Point().X(30.).Y(40.));

// 編集注釈オブジェクトを作成する
RedactionAnnotation annotation = new RedactionAnnotation();
// 注釈の名前を設定する
annotation.setName("Name Updated");

// 注釈の長方形領域を設定する
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.setZindex(1);
annotation.setModified("01/01/2018 12:02:03.000 AM");
annotation.setQuadPoint(points);

// SlateBlue の色を 16 進コードで定義する
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);

// 注釈の塗りつぶし色を指定する
annotation.setFillColor(color);

// ドキュメントから既存の注釈を取得する
RedactionAnnotationsResponse responseAnnotations = pdfApi.getDocumentRedactionAnnotations(sourcePDF, null, null);
assertEquals(200, (int)responseAnnotations.getCode());

// インデックス0の注釈を取得する
String annotationId = responseAnnotations.getAnnotations().getList().get(0).getId();

// インデックス0の注釈を更新する
AsposeResponse response = pdfApi.putRedactionAnnotation(sourcePDF, annotationId, annotation, null, null, true);
assertEquals(200, (int)response.getCode());
編集注釈が更新されました

画像 2:- 編集注釈が更新されました。

上記の例で使用されているリソースファイルは、次のリンクからダウンロードできます。

結論

この記事では、PDF ドキュメントから機密情報を編集する手順について説明しました。編集注釈の他にも、API ではさまざまな注釈機能がサポートされており、その詳細は 注釈の操作 で確認できます。機能の詳細については、製品ホームページ をご覧ください。関連する質問がある場合は、無料製品サポート フォーラム からお気軽にお問い合わせください。