PDFに注釈を付ける

このブログは、前回のブログの続きです。前回のブログでは、Java REST API を使用して PDF にテキストの強調表示や取り消し線、線や円の注釈を追加する方法 1 について、Aspose.PDF Cloud SDK for Java の魅力的な機能をいくつか紹介しました。この記事では、特に、Java プログラミング言語を使用して PDF ドキュメント内にテキスト、ポリライン、波線、添付ファイルの注釈を追加する方法について詳しく説明します。

Aspose.PDF Cloud は、ユーザーが PDF ファイルを作成、操作し、既存の PDF ファイルを他の サポートされているドキュメント形式 にレンダリングできるようにする REST API です。クラウド API には、次の 2 つの方法でアクセスできます。

  • cURLコマンド経由でAPIにアクセスする
  • Javaプログラミング言語でAPIにアクセスする

cURL コマンドと Java コードを使用して PDF ドキュメントにさまざまな注釈を追加する方法についてさらに説明します。

cURLコマンドを使用して注釈を追加する

cURL コマンドは、REST API にアクセスする最も簡単で優れた方法の 1 つです。それでは、cURL コマンドを使用してさまざまな注釈を追加する方法について説明します。各 API では、処理用にファイルを保存できるクラウド ストレージにもアクセスできることに注意してください。そのため、データの整合性を確保するために、API には許可されたユーザーのみがアクセスできます。そのため、最初に Aspose.Cloud ダッシュボード にアクセスし、GitHub または Google アカウントを持っている場合はサインアップするだけです。そうでない場合は、新しいアカウントの作成 ボタンをクリックして必要な情報を入力します。資格情報を使用してダッシュボードにログインし、ダッシュボードからアプリケーション セクションを展開して、クライアント資格情報セクションまで下にスクロールして、クライアント ID とクライアント シークレットの詳細を確認します。

次のステップでは、コマンド プロンプトから API にアクセスできるように、JSON Web Token (JWT) を生成します。

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=7042694c-5251-4aba-83c9-e81e7518724f&client_secret=db246d4742e8cd22e7266c9391992689" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

テキスト注釈

テキスト注釈は、PDF ドキュメント内の特定の場所に添付される注釈です。注釈は閉じられているときはアイコンとして表示され、開かれるときは読者が選択したフォントとサイズで注釈テキストを含むポップアップウィンドウが表示されます。テキスト注釈を追加するには、PostPageTextAnnotation API を使用する必要があります。次の cURL コマンドを使用して、注釈アイコン付きのテキスト注釈を追加します。

 curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/text" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: application/json" \
-d "[{  \"Color\": {  \"A\": 0, \"R\": 0xDA,  \"G\": 0xA5, \"B\": 0x20    },  \"Contents\": \"Hello World \",  \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"string\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 800,      \"URX\": 100,      \"URY\": 100    },    \"PageIndex\": 1,    \"ZIndex\": 1,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Center\",    \"CreationDate\": \"string\",    \"Subject\": \"Subject of Annotation\",    \"Title\": \"Annotation Title\",    \"RichText\": \"string\",    \"State\": \"Undefined\",    \"Open\": true,    \"Icon\": \"Note\"  }]"
PDF のテキスト注釈

画像 1: PDF ファイル内のメモアイコン付きのテキスト注釈。

上記の例で使用したサンプルPDFファイルは、次のリンクからダウンロードできます。

ポリライン注釈

ポリライン注釈は、ページ上にポリラインを手書きするために使用されます。ポリラインの頂点によって定義される任意の数の辺を含めることができます。透明な塗りつぶし色のポリライン注釈は、表示されている線の周囲でのみ選択できます。ポリライン注釈は、PostPagePolyLineAnnotations API を使用して追加することもできます。

curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/polyline" \
-H  "accept: application/json" \
-H  "authorization: Bearer " \
-H  "Content-Type: application/json" \
-d "[  {       \"Color\": {      \"A\": 0,      \"R\": 122,      \"G\": 132,      \"B\": 255    },    \"Contents\": \"Hello World...\",    \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"Polyline\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 200,      \"URX\": 150,      \"URY\": 250    },    \"PageIndex\": 1,    \"ZIndex\": 1,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Center\",    \"CreationDate\": \"05/26/2021 03:10:00.000 PM\",    \"Subject\": \"Subject of Annotation\",    \"Title\": \"Title of Annotation\",    \"RichText\": \"<?xml version=\\\"1.0\\\"?><body xmlns=\\\"https://www.w3.org/1999/xhtml/\\\" xmlns:xfa=\\\"https://www.xfa.org/schema/xfa-data/1.0/\\\" xfa:APIVersion=\\\"Acrobat:7.0.0\\\" xfa:spec=\\\"2.0.2\\\" ><span style=\\\"text-decoration:;font-size:10.0pt\\\">Contents</span></body>\",    \"InteriorColor\": {      \"A\": 255,      \"R\": 120,      \"G\": 110,      \"B\": 255    },    \"StartingStyle\": \"Circle\",    \"EndingStyle\": \"OpenArrow\",    \"Intent\": \"PolyLineDimension\",    \"Vertices\": [      {            \"X\": 164.611,            \"Y\": 499.629          },          {            \"X\": 192.858,            \"Y\": 509.857          },          {            \"X\": 226.461,            \"Y\": 493.785          }    ]  }]"

波線注釈

注釈pdf - npm

波線またはギザギザの下線付き注釈は、文書内の情報を強調するのに役立ちます。これらは、PostPageSquigglyAnnotations API を使用して追加できます。以下のコマンドは、PDF 文書に波線注釈を追加するのに役立ちます。

curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithTable.pdf/pages/1/annotations/squiggly" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: application/json" \
-d "[  {    \"Color\": {      \"A\": 255,      \"R\": 120,      \"G\": 123,      \"B\": 150    },    \"Contents\": \"A squiggly Annotation\",    \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"First Annotation\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 300,      \"URX\": 120,      \"URY\": 330    },    \"PageIndex\": 1,    \"ZIndex\": 1,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Center\",    \"CreationDate\": \"05/26/2021 03:10:00.000 PM\",    \"Subject\": \"Subject \",    \"Title\": \"Title of Squiggly\",     \"Starting\": {      \"X\": 162.663,      \"Y\": 654.5    },    \"StartingStyle\": \"Circle\",    \"Ending\": {      \"X\": 230.845,      \"Y\": 654.5    },    \"EndingStyle\": \"OpenArrow\",    \"InteriorColor\": {      \"A\": 255,      \"R\": 220,      \"G\": 220,      \"B\": 220    },    \"LeaderLine\": 10,    \"LeaderLineExtension\": 5,    \"LeaderLineOffset\": 2.5,    \"ShowCaption\": true,    \"CaptionOffset\": {      \"X\": 7,      \"Y\": 8    },    \"CaptionPosition\": \"Top\",    \"Intent\": \"LineArrow\",\"RichText\": \"string\",    \"QuadPoints\": [      {        \"X\": 100,        \"Y\": 200      }    ]  }]"

添付ファイルの注釈

さまざまなファイルを PDF ドキュメントの添付ファイル注釈として追加することができ、この要件を満たすには、PostPageFileAttachmentAnnotations API を使用できます。既存のファイルを PDF ドキュメントに添付するには、次の cURL コマンドを実行します。この例では、PdfWithTable.pdf という名前のファイル (クラウド ストレージで既に使用可能) が添付ファイルとして使用されます。

curl -X POST "https://api.aspose.cloud/v3.0/pdf/PdfWithBookmarks.pdf/pages/1/annotations/fileattachment" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>" \
-H  "Content-Type: application/json" \
 -d "[  {       \"Color\": {      \"A\": 255,      \"R\": 120,      \"G\": 120,      \"B\": 120    },    \"Contents\": \"Content\",    \"Modified\": \"05/26/2021 03:10:00.000 PM\",    \"Id\": \"1\",    \"Flags\": [      \"Default\"    ],    \"Name\": \"FileAttachment\",    \"Rect\": {      \"LLX\": 100,      \"LLY\": 200,      \"URX\": 120,      \"URY\": 2200    },    \"PageIndex\": 1,    \"ZIndex\": 0,    \"HorizontalAlignment\": \"Center\",    \"VerticalAlignment\": \"Top\",    \"CreationDate\": \"05/26/2021 03:10:00.000 PM\",    \"Subject\": \"Subject\",    \"Title\": \"Title\",    \"RichText\": \"string\",    \"Icon\": \"PushPin\",    \"Opacity\": 0,    \"FileDescription\": \"string\",    \"FileName\": \"PdfWithTable.pdf\",    \"FilePath\": \"PdfWithTable.pdf\"  }]"

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

cURL コマンド以外に、クラウド API を使用するもう 1 つの方法は、プログラミング SDK を介してアクセスすることです。当社は、一般的なプログラミング言語用のプログラミング SDK を開発しました。したがって、Java 言語を使用して PDF の注釈を操作するには、Aspose.PDF Cloud SDK for Java を使用してください。

最初のステップは、SKD をシステムにインストールすることです。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のインストール方法をご覧ください。

テキスト注釈

PDF ドキュメントにテキスト注釈を追加する手順を以下に示します。

  • 最初のステップは、PdfApiオブジェクトを作成し、ClientIDとClientSecretを引数として渡すことです。
  • 次に、注釈を追加するRectangleオブジェクトを作成します。
    • LLX - 左下隅の X 座標。
    • LLY - Y - 左下隅の座標。
    • URY - X - 右上隅の座標。
    • URY - Y - 右上隅の座標。
  • setHorizontalAlignment(..) メソッドを使用して配置を定義する TextAnnotation オブジェクトを作成します。setSubject(…) メソッドを使用して件名を設定し、setState(…) メソッドを使用してデフォルトの状態を設定します。
  • 次に、TextAnnotation型のArrayList<>オブジェクトを作成し、上記で作成したTextAnnotationオブジェクトを追加します。
  • 最後に、postPageTextAnnotations(…) を呼び出し、入力PDFファイル名、ページ番号、および上記で作成した Annotations ArrayList を引数として渡します。
// 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 name = "PdfWithTable.pdf";	        
			    
// ローカルシステムからファイルをロードする
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// ファイルをクラウドストレージにアップロードする
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// 注釈を追加する必要があるページ番号
int pageNumber = 1;

// 注釈が追加された長方形オブジェクトを作成する
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// AnnotationFlags のリスト配列を作成する
List<AnnotationFlags> flags = new ArrayList<>();
flags.add(AnnotationFlags.DEFAULT);

// TextAnnotation オブジェクトを作成する
TextAnnotation textAnnotation = new TextAnnotation();
textAnnotation.setName("Annotation Name");
textAnnotation.setRect(rect);
textAnnotation.setFlags(flags);
textAnnotation.setHorizontalAlignment(HorizontalAlignment.CENTER);

// 注釈内に表示されるコンテンツを設定する
textAnnotation.contents("Hello World...");
// 注釈のアイコンを設定する
textAnnotation.icon(TextIcon.KEY);

textAnnotation.setSubject("Text Box Subj");
textAnnotation.setZindex(1);

// 注釈オブジェクトのデフォルト状態
textAnnotation.setState(AnnotationState.COMPLETED);
		        
// TextAnnotation の ListArray を作成する
List<TextAnnotation> annotations = new ArrayList<>();

// 上記で作成したTextAnnotationをListインスタンスに追加します。
annotations.add(textAnnotation);

// PDFファイルに注釈を追加するメソッドを呼び出す
AsposeResponse response = pdfApi.postPageTextAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

ポリライン注釈

Cloud SDK は、PDF ドキュメントにポリライン注釈を追加する同じ機能も提供します。この要件を満たすための手順とコード スニペットを以下に示します。

  • まず、PdfApiインスタンスを作成し、ソースファイルをクラウドストレージにアップロードする必要があります。
  • ポリラインを描画するポイントを定義する Point 型の ArrayList を作成します。
  • 次のステップは、長方形領域を定義するPolyLineAnnotationオブジェクトを作成し、Points ListArrayをsetVertices(…)メソッドに渡すことです。
  • 内部色を設定するには、setInteriorColor(…)メソッドを使用し、Colorインスタンスを引数として渡します。
  • ここで、startingStyle(…) メソッドと endingStyle(…) メソッドを呼び出して、注釈の開始スタイルと終了スタイルを定義します。これらのメソッドは、LineEnding 列挙から値を引数として受け取ります。
  • 最後に、PdfApi クラスの postPagePolyLineAnnotations(…) メソッドを呼び出して、PDF ドキュメント内に注釈をレンダリングします。
// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String name = "PdfWithTable.pdf";	        
			    
// ローカルシステムからファイルを読み込む
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// ファイルをクラウドストレージにアップロードする
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// 注釈が追加される入力ファイルのページ番号
int pageNumber = 1;

// 注釈用の長方形領域
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// 注釈の頂点を指定する
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));

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

// PolyLineAnnotation オブジェクトを作成する
PolyLineAnnotation annotation = new PolyLineAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
// 注釈の水平方向の配置を設定する
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");

// カラーオブジェクトを作成する
Color color = new Color();
color.setA(255);
color.setR(120);
color.setG(140);
color.setB(130);

// 注釈インスタンスの内部色を設定する
annotation.setInteriorColor(color);
		        
annotation.setVertices(vertices);
// 注釈の開始スタイルを指定する
annotation.startingStyle(LineEnding.OPENARROW);

// 注釈の終了スタイルを設定する
annotation.endingStyle(LineEnding.SQUARE);

List<PolyLineAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// ドキュメントの最初のページにポリライン注釈を追加するメソッドを呼び出す
AsposeResponse response = pdfApi.postPagePolyLineAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

波線注釈

SquigglyAnnotation という別のクラスは、PDF ドキュメントに Squiggly 注釈を追加するために使用されます。以下のコード スニペットを使用すると、クラウド ストレージで利用可能な PDF ファイルに Squiggly 注釈を追加できます。

// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String name = "PdfWithTable.pdf";	        
			    
// ローカルシステムからファイルを読み込む
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// ファイルをクラウドストレージにアップロードする
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// 注釈が追加される入力ファイルのページ番号
int pageNumber = 1;

// 注釈用の長方形領域
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(600.)
    .URX(200.)
    .URY(650.);

// 注釈の頂点を指定する
List<Point> vertices = new ArrayList();
vertices.add(new Point().X(10.).Y(10.));
vertices.add(new Point().X(20.).Y(10.));
vertices.add(new Point().X(10.).Y(20.));
vertices.add(new Point().X(10.).Y(10.));

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

// SquigglyAnnotation オブジェクトを作成する
SquigglyAnnotation annotation = new SquigglyAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
		        
// カラーオブジェクトを作成する
Color color = new Color();
color.setA(155);
color.setR(120);
color.setG(140);
color.setB(130);

// 注釈インスタンスの内部色を設定する
annotation.color(color);

// 注釈ポイントを設定する		        
annotation.setQuadPoints(vertices);

List<SquigglyAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// ドキュメントの最初のページに Squiggly Annotation を追加するメソッドを呼び出す
AsposeResponse response = pdfApi.postPageSquigglyAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

ファイル添付注釈

ファイル添付注釈を追加するには、次のコード スニペットを使用してみてください。コードの説明は上記のセクションで共有したものと同じですが、この要件を満たすには FileAttachmentAnnotation オブジェクトを使用する必要があります。

// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "a41d01ef-dfd5-4e02-ad29-bd85fe41e3e4";
String clientSecret = "d87269aade6a46cdc295b711e26809af";
				
// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String name = "PdfWithTable.pdf";	        
			    
// ローカルシステムからファイルを読み込む
File file = new File("/Users/nayyershahbaz/Downloads/" + name);
// ファイルをクラウドストレージにアップロードする
FilesUploadResult uploadResponse = pdfApi.uploadFile(name, file, null);
				
// 注釈が追加される入力ファイルのページ番号
int pageNumber = 1;

// 注釈用の長方形領域
Rectangle rect = new Rectangle()
    .LLX(100.)
    .LLY(100.)
    .URX(200.)
    .URY(200.);

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

// FileAttachmentAnnotation オブジェクトを作成する
FileAttachmentAnnotation annotation = new FileAttachmentAnnotation();
annotation.setName("Name");
annotation.setRect(rect);
annotation.setFlags(flags);
annotation.setHorizontalAlignment(HorizontalAlignment.CENTER);
annotation.contents("Rich Text in the PDF File...");
annotation.setSubject("Subj");
annotation.setZindex(1);
annotation.setTitle("Title");
annotation.setModified("28/05/2021 00:00:00.000 AM");
		        
// 添付ファイルのパス
annotation.setFilePath("images.jpeg");
// 添付ファイル名
annotation.setFileName("images.jpeg");

// FileAttachment のリストインスタンスを作成する
List<FileAttachmentAnnotation> annotations = new ArrayList<>();
annotations.add(annotation);
		        
// ドキュメントの最初のページにFileAttachment注釈を追加するメソッドを呼び出す
AsposeResponse response = pdfApi.postPageFileAttachmentAnnotations(name, pageNumber, annotations, null, null);
assertEquals(200, (int)response.getCode());

結論

この記事では、PDF ドキュメントにテキスト、ポリライン、波線、ファイル添付注釈を追加するための手順と関連する詳細について説明しました。当社の Cloud SDK はオープンソースであるため、GitHub から完全なソース コードをダウンロードできます。リポジトリには、Java Cloud SDK を使用して PDF ファイルを作成および既存の PDF ファイルを操作する方法に関するその他の便利な例も含まれています。関連する質問がある場合は、無料の カスタマー サポート フォーラム からお気軽にお問い合わせください。

関連記事

以下の記事をご覧になることを強くお勧めします。