
PDF ページ内のコンテンツを編集することは困難ですが、PDF 仕様では、ページ コンテンツを変更せずに PDF ページに追加できるオブジェクトの完全なセットが定義されています。これらのオブジェクトは注釈と呼ばれ、その目的はページ コンテンツのマークアップからフォームなどのインタラクティブ機能の実装まで多岐にわたります。
ほとんどの PDF ビューアーでは、テキストのハイライト、メモ、線、図形など、さまざまな種類の注釈の作成と編集が可能です。また、作成される注釈の種類に関係なく、PDF 仕様に準拠する PDF ビューアーは、すべての注釈の種類のレンダリングもサポートする必要があります。ただし、大量のドキュメントを扱う場合、注釈を手動で追加するのは面倒なので、プログラミング API が実用的なソリューションとなります。Aspose.PDF Cloud SDK for Java を使用して PDF ドキュメントに注釈を追加する方法についてもさらに説明します。
SDKのインストール
Aspose.PDF Cloud SDK for Java は、Java プログラマーが PDF ドキュメントを作成、操作し、既存の PDF ドキュメントを他の サポートされているドキュメント形式 に変換できるようにするプログラミング API です。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>
詳細については、Aspose.Cloud SDKのインストール方法をご覧ください。
さらに、ユーザーのプライバシーとデータの整合性を確保するため、すべての API は承認されたユーザーのみがアクセスできることに注意してください。したがって、最初に Aspose.Cloud ダッシュボード にアクセスし、GitHub または Google アカウントをお持ちの場合はサインアップするだけです。そうでない場合は、新しいアカウントの作成 ボタンをクリックして必要な情報を入力します。資格情報を使用してダッシュボードにログインし、ダッシュボードからアプリケーション セクションを展開して、クライアント資格情報セクションまで下にスクロールして、クライアント ID とクライアント シークレットの詳細を確認します。
Java を使用してテキストを取り消す
場合によっては、ドキュメント内の特定のコンテンツをドキュメントから削除せずに、古いものとしてマークする必要があります。取り消し線 (別名取り消し線) は、中央に水平線が引かれた単語で表されます。これは、テキストが間違っているか古いものであり、最近削除されたか、そのようにマークされたことを意味します。取り消し線注釈の設定は、strikethroughSettings プロパティを使用して設定できます。strikethroughSettings プロパティは、取り消し線注釈の色、不透明度、作成者、件名、変更日、および isLocked プロパティを設定するために使用されます。
// 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";
int pageNumber = 1;
// 注釈用の長方形領域を作成する
Rectangle rect = new Rectangle()
.LLX(200.)
.LLY(380.)
.URX(250.)
.URY(375.);
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
List<Point> points = new ArrayList<>();
points.add(new Point().X(132.).Y(380.)); // Top-Left edge of the Strike Through line
points.add(new Point().X(95.).Y(10.)); // Top-Right edge of the strike through line
points.add(new Point().X(130.).Y(25.));
points.add(new Point().X(130.).Y(10.));
StrikeOutAnnotation annotation = new StrikeOutAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.setRichText("Rich Text");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setQuadPoints(points);
annotation.setModified("05/22/2021 00:00:00.000 AM");
List<StrikeOutAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
AsposeResponse response = pdfApi.postPageStrikeOutAnnotations(sourcePDF, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());
ハイライト注釈を追加
PDF 内のコンテンツを強調表示することは、ドキュメント内の重要な情報に注意を向けることができるため、不可欠です。強調表示は、まず読者に重要な部分を選び出すように求め、その後でその情報を効果的に確認する方法を提供するため、効果的です。当社のクラウド API は、PDF ドキュメント内のコンテンツを強調表示する機能を提供します。以下に、PDF ファイルに強調表示注釈を追加する手順を示します。
- まず、ClientSecretとClientIdの詳細を指定してPdfApiのインスタンスを作成します。
- ローカル システムから PDF ファイルを読み込むための File インスタンスを作成し、PdfApi クラスの uploadFile(…) メソッドを呼び出してドキュメントをクラウド ストレージにアップロードします。
- 次に、注釈を追加できる長方形領域を指定するために、Rectangle クラスのインスタンスを作成します。
- 次に、HighlightAnnotation を描画するポイントに関する情報を保持する Point 型の ArrayList を作成します。
- HighlightAnnotationクラスのオブジェクトを作成し、名前、長方形領域、件名、タイトル、QuadPoints、注釈の変更日を設定します。
- 次のステップは、HighlightAnnotation タイプのリストを作成し、上記で作成した HighlightAnnotation オブジェクトをこのリストに追加することです。
- 最後に、PdfApi クラスの postPageHighlightAnnotations(…) メソッドを呼び出し、ソース PDF、ページ番号、および注釈リストを引数として渡します。

画像 1: PDF ファイル内の注釈を強調表示します。
上記の例で使用したサンプルファイルは、次のリンクからダウンロードできます。
線注釈を追加する方法
取り消し線やハイライト注釈を追加するのと同様に、API を使用すると PDF ドキュメント内に線注釈を追加することもできます。この要件を満たすために、LineAnnotation というクラスがあります。この要件を満たす方法の詳細を以下に示します。
- まず、ClientSecretとClientIdの詳細を指定してPdfApiのインスタンスを作成します。
- オプションとして、File インスタンスを作成してローカル システムから PDF ファイルを読み込み、PdfApi クラスの uploadFile(…) メソッドを呼び出してドキュメントをクラウド ストレージにアップロードします。ファイルがすでにクラウド ストレージで使用可能な場合は、それを使用できます。
- 残りのオブジェクト初期化プロパティは、HighlithAnnotationの場合と同じですが、LineAnnotationクラスのオブジェクトを作成し、setStarting(…)メソッドとsetEnding(…)メソッドを使用して線の開始点と終了点を設定する必要があります。
// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 入力PDF文書
String sourcePDF = "PdfWithTable.pdf";
// ローカルシステムからファイルを読み込む
File file = new File("/Users/nayyershahbaz/Downloads/" + sourcePDF);
// ファイルをクラウドストレージにアップロードする
FilesUploadResult uploadResponse = pdfApi.uploadFile(sourcePDF, file, null);
// 注釈を追加するページ番号
int pageNumber = 1;
// 注釈用の長方形領域を作成する
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(500.)
.URX(400.)
.URY(510.);
// AnnotationFlags タイプの List オブジェクトを作成する
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// ライン注釈オブジェクトを作成する
LineAnnotation annotation = new LineAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setRichText("Rich Text");
annotation.setSubject("Subj");
annotation.setTitle("Title");
// 線の始点を設定する
annotation.setStarting(new Point().X(100.).Y(100.));
// 線の終点を設定する
annotation.setEnding(new Point().X(20.).Y(680.));
// staleblue のカラーインスタンスを作成する
Color color = new Color();
color.setA(0x00);
color.setR(0x6A);
color.setG(0x5A);
color.setB(0xCD);
// 注釈の色を設定する
annotation.interiorColor(color);
// 注釈の変更日を設定する
annotation.setModified("05/22/2021 00:00:00.000 AM");
// ライン注釈のリストインスタンスを作成する
List<LineAnnotation> annotations = new ArrayList<>();
// LineAnnotation オブジェクトを Line Annotations リストに追加します
annotations.add(annotation);
// PDF ファイルに線注釈を追加する API メソッドを呼び出す
AsposeResponse response = pdfApi.postPageLineAnnotations(sourcePDF, pageNumber, annotations, null, null);
PDF に円形注釈を追加する
円形注釈も PDF ドキュメント内でよく使用されており、API はこの注釈タイプを非常によくサポートしています。円形注釈を追加するには、CircleAnnotation クラスを使用してください。以下のコードを使用してこの要件を満たすことができます。
// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "7042694c-5251-4aba-83c9-e81e7518724f";
String clientSecret = "db246d4742e8cd22e7266c9391992689";
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
// 入力PDF文書
String sourcePDF = "PdfWithTable.pdf";
// ローカルシステムからファイルを読み込む
File file = new File("/Users/nayyershahbaz/Downloads/" + sourcePDF);
// ファイルをクラウドストレージにアップロードする
FilesUploadResult uploadResponse = pdfApi.uploadFile(sourcePDF, file, null);
// 注釈を追加するページ番号
int pageNumber = 1;
// 注釈用の長方形領域を作成する
Rectangle rect = new Rectangle()
.LLX(100.)
.LLY(700.)
.URX(300.)
.URY(500.);
// AnnotationFlags タイプの List オブジェクトを作成する
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);
// ハイライト注釈オブジェクトを作成する
CircleAnnotation annotation = new CircleAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setRichText("Rich Text");
annotation.setSubject("Subj");
annotation.setTitle("Title");
// staleblue のカラーインスタンスを作成する
Color color = new Color();
color.setR(0xC7);
color.setG(0xE2);
color.setB(0x6f);
// 注釈の色を設定する
annotation.interiorColor(color);
// 注釈の変更日を設定する
annotation.setModified("05/22/2021 00:00:00.000 AM");
// ハイライト注釈のリストインスタンスを作成する
List<CircleAnnotation> annotations = new ArrayList<>();
// CircleAnnotation オブジェクトを Circle Annotation リストに追加します
annotations.add(annotation);
// PDF ファイルに円形注釈を追加する API メソッドを呼び出す
AsposeResponse response = pdfApi.postPageCircleAnnotations(sourcePDF, pageNumber, annotations, null, null);

画像 2: PDF ファイル内の円注釈。
上記の入力 PDF ドキュメントと結果の PDF は、次のリンクからダウンロードできます。
クイックヒント
無料のオンラインPDF注釈アプリを使用すると、ワンクリックでPDFからすべての注釈を削除できます。
結論
このブログでは、現在 Aspose.PDF Cloud SDK for Java でサポートされているさまざまな注釈の種類について説明しました。注釈以外にも、API は PDF 形式に関連する他の多くの魅力的な機能をサポートしています。詳細については、開発者ガイド をさらに詳しく調べることをお勧めします。
当社は常にお客様に最善のサービスを提供し、お客様からのフィードバックや提案に耳を傾けるよう努めています。API の使用中に問題が発生した場合や、関連する質問がある場合は、無料サポート フォーラム からお気軽にお問い合わせください。
関連記事
詳細については、次のリンクにアクセスすることを強くお勧めします。