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.saveAs()を使用して透かし付きPDFを保存する
 :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("<h1 style='color:red;'>Confidential</h1>");
pdf.saveAs("watermarked.pdf");
 :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("<h1 style='color:red;'>Confidential</h1>");
pdf.saveAs("watermarked.pdf");
JAVA

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

このガイドでは、image透かし、透過性およびポジションの制御、およびTextStamperImageStamperを使用した高度なスタンプ処理をカバーしています。 関連するPDF操作技術については、JavaでHTMLからPDFを作成する方法のガイド、または背景と前景の追加の概要を確認してください。

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

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

//: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");
    }
}
//: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");
    }
}
JAVA

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

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

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

ヒント斜めの複数行スタンプのような複雑なテキストフォーマットのために、1つのHTML文字列内に複数のCSS変換を組み合わせることができます: 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からの画像抽出ガイドを参照してください。


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

私のお気に入りのこの種のライブラリはIronPDFです。PDFファイルの迅速で効率的な操作が可能です。また、PDF/A形式へのエクスポートやPDF文書へのデジタル署名といった多くの貴重な機能も備えています。

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

Milan Jovanovic

Microsoft MVP

ケーススタディを見る
Icon Quote related to 画像透かしでサポートされているファイル形式は何ですか?

IronOCRのおかげで私たちは年間$40,000を手作業の処理から節約し、生産性を向上させ、高影響のタスクにリソースを充てることができます。非常にお勧めします。

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

Brent Matzelle

最高技術責任者, OPYN

ケーススタディを見る
Icon Quote related to 画像透かしでサポートされているファイル形式は何ですか?

IronSuiteは私たちの業務において重要な役割を果たしています。これらは、フロアプランの作成や在庫管理の改善を含め、ビジネス全体の効率を向上させるツールです。

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

David Jones

リードソフトウェアエンジニア、Agorus Build

ケーススタディを見る

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

applyWatermarkメソッドは、HTML文字列の後に不透明度と配置パラメータを受け入れます。 不透明度は0(完全に透明)から100(完全に不透明)までの整数です。 ほとんどのドキュメントに対して20から40の範囲が効果的で、透かしが可視でありながら本文を妨げません。 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)は、不透明度50、VerticalAlignment.MIDDLE、HorizontalAlignment.CENTERを渡すことと同等です。

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


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

ImageStamperクラスは、正確なピクセル座標、ページ範囲のターゲティング、または動的なテキスト生成が必要な場合にプログラマチックな制御を提供します。 どちらのクラスもcom.ironsoftware.ironpdf.stampパッケージに属しています。

TextStamperは文字列値を受け入れ、フォント、フォントサイズ、フォントカラー、水平および垂直方向の配置、不透明度のプロパティを公開します。 また、回転を整数(度)でサポートしています。 TextStamperと同じ配置および不透明度の制御を公開します。

透かしクラスのapplyWatermarkよりも主要な利点は、特定のページをターゲットにする能力です。 ページ番号のゼロインデックスリストをstampメソッドに渡して、透かしが必要なページだけに適用します。たとえば、レポートの表紙のみや契約の最終承認ページのみにスタンプを押します。

//: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メソッドは、ページ番号のゼロインデックスリストを受け取り、透かしを受け取るページを正確に制御します。 ページリストが提供されない場合、スタンプはすべてのページに適用されます。 これは、アプリケーションが動的に透かしを生成するたびに、たとえば生成されたPDFに一意のトランザクションID、ユーザー名、またはタイムスタンプを埋め込む場合にTextStamperが正しい選択です。

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

たとえば、ユニークな顧客特定の透かし付きのPDFを数百単位で一括処理するには、各saveAsを呼び出します。 IronPDFは各ドキュメントを独立して処理するので、メモリ使用量は制御されています。 Java PDF stampガイドは、ImageStamperと詳細なスタンプオプションをカバーし、IronPDF Javaドキュメントは完全なAPIリファレンスを提供します。

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

applyWatermarkメソッドは、HTML文字列からの迅速で一貫したマルチページスタンプに最適化されています。 applyWatermarkが不足するシナリオを扱います: ページの部分集合をターゲットとする、異なる構成を持つ複数のスタンプを適用する、またはデータベースまたはユーザー入力から透かしパラメータをプログラム的に構築するなど。 どちらのアプローチも、PDFコンテンツストリームに直接埋め込まれたベクター品質の出力を生成しますので、透かしは再保存、印刷、オプションコンテンツレイヤーを尊重しないPDFリーダーでの操作を生き延びます。

Apache PDFBoxライブラリで透かしを処理している開発者は、IronPDFのアプローチが極めて簡単であると感じるでしょう。 PDFBoxはコンテントストリームを手動で構成し、リソースを管理する必要がありますが、applyWatermarkはプレーンなHTML文字列を受け入れます。 BaeldungでのiTextウォーターマークガイドは、iTextを使用してPdfCanvasパイプラインを通じてそれらを追加する同等のタスクを示しています。IronPDFはそれを1つのメソッド呼び出しに削減します。

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


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

このガイドでは、IronPDF for Javaを使用してPDFに透かしを挿入する4つのアプローチをカバーしています: applyWatermarkを介して単純なテキスト透かし、HTML ImageStamperを使用した高度なユースケースのメソッドパラメータを通じた不透明度と配置の制御、およびプログラム的なスタンピング。

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

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

よくある質問

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

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

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

はい。HTML文字列内に <img> タグを 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.6 リリースされたばかり
Still Scrolling Icon

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

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