JavaでPDFにカスタム透かしを適用する方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDFは、CSSのフルサポートを備えたHTML文字列を使用して、Javaの開発者がPDFドキュメントにカスタム透かしを適用できるようにし、ブランドやセキュリティの目的でテキスト、画像、不透明度、回転、位置を完全に制御できます。

クイックスタート: Java で PDF に透かしを適用する

  1. IronPDFをMavenまたはGradleプロジェクトに追加し、ライセンスキーを設定します
  2. PdfDocument.fromFile() を使用して PDF ドキュメントを読み込みます
  3. テキスト、画像、またはその両方の透かしをHTML文字列で作成します
  4. pdf.applyWatermark(watermarkHtml) を使用して透かしを適用する
  5. 透かし入りのPDFをpdf.saveAs()で保存する

```java :title=QuickStartWatermark.java //:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/quickstart.java PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf")); pdf.applyWatermark(""); pdf.saveAs("watermarked.pdf");


透かし処理はPDFドキュメントを保護し、所有権や文書の状態を伝えます。 一般的なユースケースには、"Confidential"としてドラフトを表示する、すべてのページに会社のロゴを埋め込む、または文書が承認保留中であることを示すものがあります。 IronPDFはHTMLとCSSアプローチを採用しているため、カスタムフォント、不透明度、回転、絶対位置をブラウザで表現できるすべてのスタイリングが透かしに同じように機能します。

このガイドでは、`text` 透かし、`image` 透かし、不透明度と位置の制御、および [`TextStamper`](https://ironpdf.com/java/how-to/stamp-text-image-pdf/) と [`ImageStamper`](https://ironpdf.com/java/how-to/stamp-text-image-pdf/) を使用した高度なスタンプ機能について解説します。 関連するPDF操作技術については、[JavaでHTMLからPDFを作成する方法](https://ironpdf.com/java/how-to/java-create-pdf-tutorial/)のガイド、または[背景と前景の追加](https://ironpdf.com/java/how-to/background-foreground/)の概要を確認してください。

<div class="hsg-featured-snippet">
    <h3>Javaで透かしを適用する方法</h3>
     <ol>
        <li><a class="js-modal-open" data-modal-id="download-modal" href="#download-modal">PDFに透かしを適用するJavaライブラリをダウンロードする</a>。</li>
        <li>新しいPDFをレンダリングするか、既存のPDFをロードします。</li>
        <li>ウォーターマークとして使用するHTML文字列または画像を設定します。</li>
        <li>適切なメソッドを使用してウォーターマークを適用します。</li>
        <li>不透明度、回転、場所のパラメーターを必要に応じて調整します。</li>
    </ol>
</div>

## テキスト透かしをPDFに適用するには?

`applyWatermark` メソッドを使用して、PDF ドキュメントのすべてのページにテキストをスタンプします。 このメソッドはHTML文字列を受け入れるため、フォントファミリー、サイズ、色、文字間隔、テキストシャドウなど、任意のCSSプロパティで透かしをスタイル設定できます。 下記の例は、最も一般的な監査証跡とアクセス制御シナリオをカバーする"Confidential"として赤で文書をマークします。

```java
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-watermark.java
import java.io.IOException;
import java.nio.file.Paths;

import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load an existing PDF document from file
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));

        // HTML string defines the watermark appearance via CSS
        String watermarkHtml = "<h1 style='color:red;'>Confidential</h1>";

        // Apply the watermark to every page
        pdf.applyWatermark(watermarkHtml);

        // Save the watermarked PDF to a new file
        pdf.saveAs("text_watermark.pdf");
    }
}

applyWatermark 呼び出しにより、1回の操作ですべてのページに透かしが追加されます。 デフォルトでは、透かしは50%の不透明度で表示され、各ページの中央に配置されます。 ライブラリのすべての機能を有効にするには、PDF操作の前にIronPDFライセンスキーを設定してください。 <p>タグを含めることができます。

テキストの透かしはどのように見えますか?

出力ファイル text_watermark.pdf には、"Confidential"という文字が赤色で、各ページの水平および垂直方向の中央に配置されています。 透かしの下のドキュメント内容を読みやすく保つために、デフォルトの不透明度は50%です。 複数ページのドキュメントの場合、ループなしで各ページに同じスタンプが適用されます。

transform: rotate(-45deg) scale(1.5)

透かしに適用可能なより深いHTMLレンダリング技法については、HTMLからPDFへの変換チュートリアルを参照してください。


PDFに画像透かしを追加するにはどうすればよいですか?

画像の透かしは、HTML文字列内にapplyWatermarkと同じ方式で機能します。 透過背景のPNGファイルは、画像がPDFページに合成されるときに透明性が保持されるため、ロゴ透かしに理想的です。 JPEG、GIF、SVG、およびBMP形式もサポートされています。

//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;

import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load an existing PDF document from file
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));

        // Reference the image file path relative to the runtime working directory
        String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";

        // Apply the image watermark to all pages
        pdf.applyWatermark(watermarkHtml);

        // Save the result
        pdf.saveAs("image_watermark.pdf");
    }
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark.java
import java.io.IOException;
import java.nio.file.Paths;

import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load an existing PDF document from file
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));

        // Reference the image file path relative to the runtime working directory
        String watermarkHtml = "<img src='logo.png' style='width:100px;'/>";

        // Apply the image watermark to all pages
        pdf.applyWatermark(watermarkHtml);

        // Save the result
        pdf.saveAs("image_watermark.pdf");
    }
}
JAVA

<img> タグ内の CSS プロパティは、サイズ、位置、および透明度を制御します:

//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
    "<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/image-watermark-advanced.java
// Apply a 150px logo at 50% opacity, rotated 45 degrees counterclockwise
String advancedWatermarkHtml =
    "<img src='logo.png' style='width:150px; opacity:0.5; transform:rotate(-45deg);'/>";
JAVA

実行時には、JVMの作業ディレクトリから画像パスにアクセスできる必要があります。サーバーへのデプロイでは、パス解決の問題を回避するため、絶対パスを使用するか、src属性内にBase64データURIとして画像を埋め込んでください。

画像透かしでサポートされているファイル形式は何ですか?

IronPDFは透かしにPNG、JPEG、GIF、SVG、およびBMP画像フォーマットをサポートしています。 透過背景のPNGはロゴ透かしに最もきれいな結果を生み出します。 出力ファイル image_watermark.pdf には、幅 100 ピクセルの画像が、各ページの中央に配置され、デフォルトの不透明度 50% で表示されています。 他の透かしに使用するために既存のPDFから画像を抽出するには、PDFからの画像抽出ガイドを参照してください。


透かしの不透明度と整列をどのように制御しますか?

applyWatermark メソッドは、HTML 文字列の後に不透明度と配置のパラメータを受け取ります。 不透明度は0(完全に透明)から100(完全に不透明)までの整数です。 ほとんどのドキュメントに対して20から40の範囲が効果的で、透かしが可視でありながら本文を妨げません。 VerticalAlignment および HorizontalAlignment 列挙型は、透かしがページのどの角または端に配置されるかを制御します。

//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;

import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load an existing PDF document from file
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));

        // Define the watermark HTML
        String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";

        // Apply at 30% opacity, anchored to the top-left corner of each page
        pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);

        // Save the result
        pdf.saveAs("watermark_opacity_alignment.pdf");
    }
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/watermark-opacity-alignment.java
import java.io.IOException;
import java.nio.file.Paths;

import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load an existing PDF document from file
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));

        // Define the watermark HTML
        String watermarkHtml = "<h1 style='color:blue;'>Confidential</h1>";

        // Apply at 30% opacity, anchored to the top-left corner of each page
        pdf.applyWatermark(watermarkHtml, 30, VerticalAlignment.TOP, HorizontalAlignment.LEFT);

        // Save the result
        pdf.saveAs("watermark_opacity_alignment.pdf");
    }
}
JAVA

3つのオプションのパラメータを組み合わせると、垂直と水平の整列の交差のそれぞれに対して、9つの異なる配置オプションが得られます。 同じページに複数の位置で透かしを必要とするユースケースや、特定のページ範囲のみに適用する透かしには、スタンプクラスがより詳細な制御を提供します。 背景と前景のガイドで、レイヤー合成技法を確認してください。

どのような整列オプションがありますか?

applyWatermark メソッドは、以下のアライメント定子をサポートしています:

縦方向の配置 (VerticalAlignment):

  • TOP - 上端に固定された透かし
  • MIDDLE - 縦方向に中央揃えされた透かし
  • BOTTOM - 下端に固定された透かし

水平方向の配置 (HorizontalAlignment):

  • LEFT - 左端に固定された透かし
  • CENTER - 水平中央揃えの透かし
  • RIGHT - 右端に固定された透かし

ご注意追加パラメータを指定しないデフォルトの呼び出し applyWatermark(html) は、opacity 50、VerticalAlignment.MIDDLE、HorizontalAlignment.CENTER を指定したのと同じ効果があります。

任意の垂直値を任意の水平値と組み合わせて、正確な制御が可能です。 右上隅のロゴや、斜め中央に配置された下書き通知など、複数のスタンプが重なる必要がある文書の場合、各スタンプを個別の applyWatermark 呼び出しとして適用してください。 注釈ベースのオーバーレイには、注釈例を参照してください。


TextStamperとImageStamperで高度な透かしをどのように適用しますか?

applyWatermark メソッドは、ほとんどの透かし処理のニーズに対応しますが、TextStamper および ImageStamper クラスは、正確なピクセル座標、ページ範囲の指定、または動的なテキスト生成が必要な場合に、プログラムによる制御を提供します。 両クラスは com.ironsoftware.ironpdf.stamp パッケージに属しています。

TextStamper は文字列値を受け取り、フォント、フォントサイズ、フォントの色、水平および垂直方向の配置、不透明度に関するプロパティを提供します。 また、回転を整数(度)でサポートしています。 ImageStamper は、画像のファイルパスまたはバイト配列を受け取り、TextStamper と同じ配置および不透明度の制御機能を提供します。

applyWatermarkと比較して、スタンパークラスの主な利点は、特定のページをターゲットにできる点です。 stamp メソッドに 0 を起点とするページ番号のリストを渡すことで、ウォーターマークを必要なページにのみ適用できます。例えば、レポートの表紙や契約書の最終承認ページにのみスタンプを押す場合などが挙げられます。

//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;

import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the target PDF document
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));

        // Configure a TextStamper with custom font, rotation, and opacity
        TextStamper stamper = new TextStamper();
        stamper.setText("DRAFT");
        stamper.setFontSize(72);
        stamper.setFontColor("gray");
        stamper.setOpacity(40);
        stamper.setRotation(45);
        stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
        stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);

        // Apply the stamp only to pages 0 and 1 (zero-indexed)
        pdf.stamp(stamper, Arrays.asList(0, 1));

        // Save the stamped PDF
        pdf.saveAs("text_stamped.pdf");
    }
}
//:path=/static-assets/pdf/content-code-examples/how-to/custom-watermark/text-stamper.java
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Arrays;

import com.ironsoftware.ironpdf.License;
import com.ironsoftware.ironpdf.PdfDocument;
import com.ironsoftware.ironpdf.stamp.HorizontalAlignment;
import com.ironsoftware.ironpdf.stamp.TextStamper;
import com.ironsoftware.ironpdf.stamp.VerticalAlignment;

public class Main {
    public static void main(String[] args) throws IOException {
        // Set the license key for IronPDF
        License.setLicenseKey("IRONPDF-MYLICENSE-KEY-1EF01");

        // Load the target PDF document
        PdfDocument pdf = PdfDocument.fromFile(Paths.get("sample.pdf"));

        // Configure a TextStamper with custom font, rotation, and opacity
        TextStamper stamper = new TextStamper();
        stamper.setText("DRAFT");
        stamper.setFontSize(72);
        stamper.setFontColor("gray");
        stamper.setOpacity(40);
        stamper.setRotation(45);
        stamper.setVerticalAlignment(VerticalAlignment.MIDDLE);
        stamper.setHorizontalAlignment(HorizontalAlignment.CENTER);

        // Apply the stamp only to pages 0 and 1 (zero-indexed)
        pdf.stamp(stamper, Arrays.asList(0, 1));

        // Save the stamped PDF
        pdf.saveAs("text_stamped.pdf");
    }
}
JAVA

stamp メソッドは、0 から始まるページ番号の配列 List<Integer> を受け取り、どのページに透かしを入れるかを正確に制御できます。 ページリストが提供されない場合、スタンプはすべてのページに適用されます。 これにより、生成される各PDFに一意のトランザクションID、ユーザー名、またはタイムスタンプを埋め込むなど、アプリケーションが動的に透かしを生成する場合、TextStamperが最適な選択肢となります。

重要TextStamper クラスと ImageStamper クラスは、共通の Stamper 基底クラスを共有しています。 アプリケーションが透かしを動的に生成するたびに、たとえば各生成されたPDFにユニークなトランザクションIDやユーザー名を埋め込む場合は、スタンパーアプローチを使用します。)]}

数百のPDFに顧客固有の透かしをスタンプするなどのバッチ処理を行う場合、ループ内で各saveAsを呼び出してください。 IronPDFは各ドキュメントを独立して処理するので、メモリ使用量は制御されています。 Java版PDFスタンプガイドでは、ImageStamperおよびその他のスタンプオプションについて詳しく解説しており、IronPDFJavaドキュメントには完全なAPIリファレンスが掲載されています。

TextStamperはapplyWatermarkとどう違いますか?

applyWatermark メソッドは、HTML 文字列から迅速かつ一貫性のある複数ページのスタンプを生成するように最適化されています。 TextStamper および ImageStamper は、applyWatermark では対応しきれないシナリオ(ページのサブセットを対象とする場合、異なる設定を持つ複数のスタンプを適用する場合、またはデータベースやユーザー入力からプログラムで透かしパラメータを構築する場合など)に対応します。 どちらのアプローチも、PDFコンテンツストリームに直接埋め込まれたベクター品質の出力を生成しますので、透かしは再保存、印刷、オプションコンテンツレイヤーを尊重しないPDFリーダーでの操作を生き延びます。

Apache PDFBoxライブラリで透かしを処理している開発者は、IronPDFのアプローチが極めて簡単であると感じるでしょう。 PDFBoxではコンテンツストリームを手動で構築し、リソースを管理する必要がありますが、applyWatermarkはプレーンなHTML文字列を受け入れます。 BaeldungのiText透かしガイドでは、iTextを使用した同様のタスクが紹介されています。これには、PdfCanvasパイプラインを介した追加が含まれます。IronPDFでは、これを単一のメソッド呼び出しに簡略化しています。

PdfDocument.extractAllText()を使用してテキストコンテンツを抽出し、期待される透かし文字列が含まれているか確認するか、一般的なトラブルシューティングのパターンについては、JavaによるPDF操作に関するStack Overflowコミュニティディスカッションを参照してください。


JavaでPDF透かしを施す次のステップは何ですか?

本ガイドでは、IronPDF for Java を使用した PDF への透かし入れに関する 4 つの手法について解説しました。applyWatermark による単純なテキスト透かし、HTML ImageStamperを用いたプログラムによるスタンプ処理の4つの手法について解説しました。

無料トライアルを開始して、Javaアプリケーションでの透かし機能をテストしてください。 トライアルには、すべてのスタンプと透かし機能へのフルアクセスが含まれており、評価期間に制限はありません。 展開の準備が整ったら、ライセンスオプションを参照して、使用状況に適した階層を見つけてください。

次に何ができるのかを見てみましょうか? ここで完全なチュートリアルページをご覧ください:IronPDF for Javaハウトゥーガイド

よくある質問

JavaでPDFにテキストの透かしを入れるには?

PDFをPdfDocument.fromFile()でロードし、次に pdf.applyWatermark() をHTML文字列と共に呼び出します。IronPDF は有効な HTML と CSS をレンダリングするので、要素の色、フォントサイズ、不透明度を直接設定できます。

Javaで画像をウォーターマークとして使用できますか?

はい。HTML文字列内に タグを applyWatermark() に渡します。透明な背景を持つ PNG ファイルが最も明確な結果を生み出します。また、ページ範囲のターゲティングには ImageStamper クラスも使用できます。

ウォーターマークの不透明度をコントロールするにはどうすればよいですか?

applyWatermark() の第二引数として0(完全透明)から100(完全不透明)の整数を渡します。20から40の値は、本文を隠さずに大半の文書で適切に機能します。

ウォーターマークを斜めに回転させることができますか?

はい。HTML要素にCSS transform: rotate(-45deg) スタイルを追加してから、applyWatermark() に渡します。IronPDFは、レンダリング中にすべての標準CSS3変換を適用します。

applyWatermark と TextStamper の違いは何ですか?

applyWatermark() は、各ページに同じHTMLベースのスタンプを適用するための最速のアプローチです。TextStamper は、フォント、回転、および特定のページのみをターゲティングするページリストに対するプログラム的な制御を提供します。

ウォーターマークを特定の位置に配置するにはどうすればよいですか?

applyWatermark() の第三と第四引数として VerticalAlignment および HorizontalAlignment の列挙値を渡します。利用可能な位置には、TOP、MIDDLE、BOTTOM が LEFT、CENTER、RIGHT と組み合わされます。

異なるページに異なるウォーターマークを適用できますか?

はい。TextStamper または ImageStamper を使用し、特定のウォーターマークが必要なページのみをターゲットにするために stamp() メソッドにゼロインデックスのページ番号のリストを渡します。

テキストと画像のウォーターマークを同じPDFに組み合わせることはできますか?

はい。applyWatermark() を複数回呼び出すか、保存前に複数の stamp() 呼び出しを行います。各呼び出しは、PDFコンテントストリームに新しいレイヤーを独立して追加します。

Darrius Serrant
フルスタックソフトウェアエンジニア(WebOps)

Darrius Serrantは、マイアミ大学でコンピュータサイエンスの学士号を取得し、Iron SoftwareでフルスタックWebOpsマーケティングエンジニアとして働いています。若い頃からコーディングに惹かれ、コンピューティングを神秘的かつアクセス可能なものとし、創造性と問題解決のための完璧な媒体と考えていました。

Iron Softwareでは、新しいものを創造することと、複雑なコンセプトをより理解しやすくすることを楽しんでいます。Resident Developerの一人として、次世代に専門知識を共有するために、学生を教えることにも志願しました。

Darriusにとって、その仕事は価値があり、実際の影響があるため、満足感があります。

準備はできましたか?
バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか?
サンプルを実行するHTML が PDF に変換されるのを確認します。