PDFに透かしを追加する

透かしとは、スタンプのように既存の文書コンテンツの前または後ろに表示されるテキストまたは画像のことです。たとえば、機密情報を含むページに「機密」透かしを適用できます。透かしは機密情報を保護し、法的文書の有効性を示すために使用できます。また、紙幣に透かしを入れることもできます。これにより、偽造防止に役立ちます。この記事では、PDF 文書の透かしに関連する機能について説明します。

PDF操作REST API

Aspose.PDF Cloud は、当社の受賞歴のある REST API であり、PDF ファイルを作成、操作し、DOCXPPTXXLSXXPSSVGJPEG などのサポートされている他の形式にレンダリングする機能を提供します。次に、Aspose.PDF Cloud API の Java ラッパーである Aspose.PDF Cloud SDK for Java について説明します。これは、Java プログラミング言語を使用して PDF に透かしを追加する機能を含む、Cloud REST API のすべての機能を提供します。

Java Cloud SDK を使用するには、まず Aspose.PDF Cloud SDK for Java をインストールする必要があります。Cloud SDK は Maven | GitHub からダウンロードできます。Maven ビルド プロジェクトで Aspose.Pdf.jar をダウンロードして使用する方法の詳細を以下に示します。

pom.xml ファイルに次の依存関係を追加します。

<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>

REST API を使用して PDF にテキスト透かしを追加する

クラウドAPIを使用するには、まずAspose.Cloudダッシュボードでアカウントを登録する必要があります。そこでは、パーソナライズされたクライアントIDとクライアントシークレットの詳細が表示されます。これらは、APIにアクセスする際に不可欠です。以下は、Javaを使用して既存のPDFドキュメントにテキスト透かしを追加する方法の詳細です。

  • まず、2 つの変数に対してクライアント ID とクライアント シークレットの詳細を指定する必要があります。
  • 次に、クライアント ID とクライアント シークレットを引数として指定して、PdfApi クラスのオブジェクトを作成します。
  • 3 番目に、フォント名を Arial、フォント サイズを 14 に指定して TextState クラスのオブジェクトを作成します。
  • ここで、TextStamp クラスのインスタンスを作成する必要があります。このオブジェクトを使用する場合、HorizontalAlignment を中央に指定し、テキスト スタンプの値、フォント サイズ、フォント タイプの詳細は、上記の手順で作成した TextState オブジェクトが引数として渡される textState(..) メソッドを使用して指定します。余白の詳細と VerticalAlignment も Center に指定します。
  • TextStamp を背景に表示するには、引数を true にして background(..) メソッドを使用します。
  • さらに、スタンプの不透明度、回転角度、ズーム係数、XY インデントも指定されます。
  • 次に、TextStamp 型の List クラスのオブジェクトを作成し、上記で作成したスタンプ オブジェクトをこのリストに追加します。
  • 最後に、PdfAPi のメソッド postPageTextStamps(..) を呼び出し、入力 PDF、ページ番号、スタンプ リストを引数として渡して、スタンプ プロセスを開始します。
// 完全な例とソースコードについては、https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java をご覧ください。

// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "29ac1517-753f-4303-b755-7185e35cf939";
String clientSecret = "c537caf71eafc8a75a5ee7813b703276";
				
String sourceFileName = "PdfWithTable.pdf";
int pageNumber = 1;
String cloudStorage = "";
String folder = "";

// クライアントIDとクライアントシークレットの詳細を使用してPdfApiのインスタンスを作成する
com.aspose.asposecloudpdf.api.PdfApi pdfApi = new com.aspose.asposecloudpdf.api.PdfApi(clientSecret,clientId);

// TextStateのオブジェクトを作成し、フォントの書式設定の詳細を指定します。
com.aspose.asposecloudpdf.model.TextState textState = new com.aspose.asposecloudpdf.model.TextState().fontSize(24.).font("Arial");

com.aspose.asposecloudpdf.model.TextStamp stamp = new com.aspose.asposecloudpdf.model.TextStamp()
       	.textAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
  	.value("Text Stamp")
	.textState(textState)
	.leftMargin(1.)
	.rightMargin(2.)
	.topMargin(3.)
	.bottomMargin(4.)
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.CENTER);
 
	stamp.background(true)
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.ON90)
	.rotateAngle(45.)
	.xindent(0.)
	.yindent(0.)
	.zoom(1.);
        
// TextStamp型のListオブジェクトを作成する
List<com.aspose.asposecloudpdf.model.TextStamp> stamps = new ArrayList<>();

// TextStamp インスタンスを TextStamps のリストに追加します
stamps.add(stamp);

// PDF ファイルの最初のページにテキストスタンプを投稿するメソッドを呼び出す
com.aspose.asposecloudpdf.model.AsposeResponse response = pdfApi.postPageTextStamps(sourceFileName, pageNumber, stamps,cloudStorage, folder);
PDFにテキストスタンプを追加しました

画像 1: PDF ドキュメントにテキスト スタンプが追加されました。

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

Java を使用して PDF に画像の透かしを追加する方法

少ないコード行で、画像の透かしを PDF ドキュメントに簡単に追加できます。以下に、PDF ファイルに JPEG 画像を追加する手順を示します。

  • まず、ClientSecret と ClientID を引数として渡しながら PdfApi オブジェクトを作成します。
  • 次のステップは、スタンプする画像ファイル、余白の詳細、および VerticalAlignment を定義する ImageStamp オブジェクトを作成することです。この例では、VerticalAlignment 列挙から Center 値を選択しました。
  • 画像がページ上のコンテンツの背後に表示されるように、ImageStamp.background(True) を設定します。そうでない場合は、ページ コンテンツの上部に表示されます。
  • ImageStamp タイプの List オブジェクトを作成し、2 番目の手順で作成した ImageStamp オブジェクトをこのコレクションに追加します。
  • 最後に、PdfApi クラスの postPageImageStamps(…) メソッドを呼び出し、入力 PDF、透かしのページ番号、および上記で作成した ImageStamp リストを引数として渡します。
  • 画像の透かしが入った PDF ファイルは同じクラウド ストレージに保存されます。結果のファイルのプレビューが下に表示されます。
// 完全な例とソースコードについては、https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java をご覧ください。

// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";

// PdfApiiのインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String file = "PdfWithTable.pdf";
// 透かしに使用するソース画像
String image = "Koala.jpg";
// 透かしを追加するページ番号
int pageNumber = 1;

// ImageStampオブジェクトのインスタンスを作成する
ImageStamp stampObject = new ImageStamp()
	.fileName(image)
	.leftMargin(1.)
	.rightMargin(2.)
	.topMargin(3.)
	.bottomMargin(214.)
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.CENTER);
	
	// ページコンテンツの後ろに透かしを追加する
	stampObject.background(true)
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
	.rotateAngle(0.)
	.xindent(0.)
	.yindent(0.)
	.zoom(0.2);

// ImageStampオブジェクトのリストを作成する
List<com.aspose.asposecloudpdf.model.ImageStamp> stamps = new ArrayList<>();

// イメージスタンプをイメージスタンプのリストに追加する
stamps.add(stampObject);

// PDFに透かし画像を追加するAPIメソッドを呼び出す
AsposeResponse response = pdfApi.postPageImageStamps(file, pageNumber, stamps,null, null);
PDFに画像スタンプを追加しました

画像 2: PDF ドキュメントに追加された画像スタンプ。

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

PDFページを透かしスタンプとして追加する

テキストと画像以外に、PDF ページを既存の PDF ドキュメントに透かしとして追加することもできます。これらの要件を満たす手順を以下に示します。

  • まず、Client ID と Client Secret を引数として渡しながら、PdfApi クラスのオブジェクトを作成します。
  • 次に、PdfPageStamp クラスのインスタンスを作成します。このクラスは、透かしに使用される PDF ドキュメントのパスを指定するために使用されます。
  • PdfPageStamp.pageIndex(..) メソッドは、透かしに使用される PDF ファイルのページ番号を指定するために使用されます。
  • 他の方法の中でも、background(..) は、PDF コンテンツの背後に透かしを設定したり、コンテンツの上に透かしを表示したりするために使用されるため重要です。
  • 次に、PdfPageStamp タイプの List を作成し、上記で作成した PdfPageStamp オブジェクトを List コレクションに追加します。
  • 最後に、PdfApi クラスのメソッド postPagePdfPageStamps(…) を呼び出します。引数として、ソース PDF ファイル、透かしを入れるページ インデックス、および PdfPageStamp のリストを渡します。結果の出力はクラウド ストレージに保存されます。
// 完全な例とソースコードについては、https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java をご覧ください。

// https://cloud.aspose.com から ClientID と ClientSecret を取得します。
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";

// PdfApiインスタンスを作成する
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String sourcePDF = "PdfWithAnnotations.pdf";

// 透かしに使用するソースPDF
String stampPDF = "rusdoc.pdf";

// 透かしを追加するページ番号
int pageNumber = 1;

// PdfPageStampオブジェクトのインスタンスを作成する
PdfPageStamp stampObject = new PdfPageStamp()
	// 透かしとして使用するPDFファイル
  	.fileName(stampPDF)
	// 透かしとして追加したいページインデックスを指定します
	.pageIndex(1)
	.leftMargin(150.)
	.rightMargin(2.)
	
	// 透かしPDFを上に移動するために、上余白を-veに設定しました
	.topMargin(-330.)
	.bottomMargin(414.)
	
  	// 透かしの垂直方向の配置を上に設定する
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.TOP);
	
  	// 透かしを前面に出す/見えるようにする
	stampObject.background(false)
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
	.rotateAngle(0.)
	.xindent(0.)
	.yindent(0.)
	
  	// ズーム係数を0.7に設定して、100%ではなく圧縮された状態で表示されるようにします。
	.zoom(0.7);

// PdfPageStampオブジェクトのリストを作成する
List<com.aspose.asposecloudpdf.model.PdfPageStamp> stamps = new ArrayList<>();
	
// PdfPageStamp を ImageStamps のリストに追加します
stamps.add(stampObject);
	
// PDFに透かしを追加するAPIメソッドを呼び出す
AsposeResponse response = pdfApi.postPagePdfPageStamps(sourcePDF, pageNumber, stamps,null, null);
透かしとしてのPDFファイル

画像 3: 透かしとして追加された PDF ファイルのプレビュー。

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

ページ番号を透かしとして追加する

ページ番号の詳細は、読者に文書の長さと閲覧しているページを明確に示すため、ユーザビリティの観点から非常に重要です。

  • PdfApi インスタンスを作成したら、PageNumberStamp クラスのオブジェクトを作成します。
  • PageNumber スタンプのパターンを指定するには、PageNumberStamp クラスのメソッド value(…) を使用します。
  • もう 1 つの重要なメソッドは、ページ番号の透かしが開始されるカウントを示す setStartingNumber(..) です。
  • マージンの詳細、不透明度、回転角度、oom 係数などのその他のコードは、上記のコード スニペットと同じです。
  • ページ番号の透かしを配置する startPageNumber と endPageNumber を指定する必要があります。
  • 最後に、入力 PDF ファイル、PageNumberStamp オブジェクト、開始ページ情報と終了ページ情報を引数として受け取り、ソース ファイルにページ番号の透かしを追加する postDocumentPageNumberStamps(…) を呼び出します。
// 完全な例とソースコードについては、https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java をご覧ください。

// https://dashboard.aspose.cloud/ から ClientID と ClientSecret を取得します。
String clientId = "c235e685-1aab-4cda-a95b-54afd63eb87f";
String clientSecret = "b8da4ee37494f2ef8da3c727f3a0acb9";
				
PdfApi pdfApi = new PdfApi(clientSecret,clientId);
				
// 入力PDF文書
String sourcePDF = "PdfWithTable.pdf";

// PdfPageStampオブジェクトのインスタンスを作成する
PageNumberStamp stampObject = new PageNumberStamp()

	// ページ番号の透かしの形式
  	.value("Page #")
	.leftMargin(1.)
	.rightMargin(2.)
	.topMargin(3.)
	.bottomMargin(4.)
	
	// 透かしの垂直方向の配置を下に設定する
	.verticalAlignment(com.aspose.asposecloudpdf.model.VerticalAlignment.BOTTOM);
	
	// カウンターの開始番号を指定する
	stampObject.setStartingNumber(3);

	// 透かしを前面に出す/見えるようにする
	stampObject.background(false)
	
	.horizontalAlignment(com.aspose.asposecloudpdf.model.HorizontalAlignment.CENTER)
	.opacity(1.)
	.rotate(com.aspose.asposecloudpdf.model.Rotation.NONE)
	.rotateAngle(0.)
	.xindent(0.)
	.yindent(0.)
	.zoom(1.0);

// 透かしを入れる場所の開始ページフォーム
int startPageNumber = 2;
	
// 透かしを配置するページインデックス
int endPageNumber = 3;
	
// PDFに透かしを追加するAPIメソッドを呼び出す
AsposeResponse response = pdfApi.postDocumentPageNumberStamps(sourcePDF, stampObject,startPageNumber, endPageNumber, null, null);
PDF のページ番号スタンプ

画像 4: PDF の透かしとしてのページ番号のプレビュー。

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

クイックヒント

Aspose.PDF Cloud SDK for Java は非常に強力で、数行のコードで、JPEGEPUBLaTeXHTMLPSXSLFoXPSSVGDOCXPCL 形式を PDF 形式に変換できます。詳細については、製品ページ をご覧ください。

結論

このブログ記事では、Aspose.PDF Cloud SDK for Java を使用して、既存の PDF ドキュメントにテキスト、画像、PDF、ページ番号情報を簡単に追加する手順について説明しました。当社の Cloud SDK はオープンソースであり、完全なソース コードをダウンロードして、必要に応じて変更することもできます。完全なソース コードは、GitHub リポジトリからダウンロードできます。関連する質問がある場合は、無料サポート フォーラム からお気軽にお問い合わせください。