IRONSOFTWAREHOME

如何在 Java 中自訂 PDF 水印

Curtis Chau
Curtis Chau
Updated: 2026年9月17日

IronPDF 讓 Java 開發者能夠使用支援完整 CSS 的 HTML 字串將自訂水印應用於 PDF 文件,提供文字、圖像、透明度、旋轉和定位的完全控制,用於品牌或安全目的。

快速入門:在 Java 中應用 PDF 水印
  1. 將 IronPDF 新增到您的 Maven 或 Gradle 專案並設置您的授權金鑰
  2. 使用 PdfDocument.fromFile() 載入您的 PDF 文件
  3. 為您的水印建立一個 HTML 字串(文字、圖像或兩者)
  4. 使用 pdf.applyWatermark(watermarkHtml) 應用水印
  5. 使用 pdf.saveAs() 保存帶水印的 PDF
  1. 1Install IronPDF with Maven Central Repository

    > mvn install

  2. 2複製並運行這段程式碼片段。

    //: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
  3. 3部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronPDF,透過免費試用
    arrow pointer

水印保護 PDF 文件並傳達所有權或文件狀態。 常見的用例包括將草稿標記為"機密"、在每頁上嵌入公司徽標,或表示文件正在等待審批。 IronPDF 採用 HTML 和 CSS 的方法,這意味著您可以在瀏覽器中表達的任何樣式(自訂字體、透明度、旋轉、絕對定位)在水印中同樣適用。

本指南涵蓋 text 水印、image 水印、透明度和位置控制,以及使用 TextStamper 和 ImageStamper 的高級蓋章。 有關相關 PDF 操作技術,請參閱在 Java 中從 HTML 建立 PDF 的指南或新增背景和前景的概述。

如何將文字水印應用於 PDF?

using applyWatermark 方法將文字蓋章到 PDF 文件的每個頁面。 該方法接受 HTML 字串,因此您可以使用任何 CSS 屬性樣式化水印:字體系列、大小、顏色、字母間距或文字陰影。 下面的範例將文件標記為紅色的"機密",這涵蓋了最常見的審核追蹤和存取控制方案。

//: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 授權金鑰。 傳遞給 applyWatermark 的 HTML 接受任何有效的 HTML 元素,因此您可以包含 <span> 或樣式化的 <p> 標籤以製作多行水印。

文字水印看起來如何?

輸出文件 text_watermark.pdf 顯示紅色的 機密 字樣,水平和垂直居中於每個頁面。 50% 的預設不透明度使文件內容在水印下仍然可讀。 對於多頁文件,每一頁都接收相同的蓋章,不需要每頁迴圈。

提示: 對於如斜向多行蓋章之類的複雜文字格式,您可以在單個 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");
    }
}
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);'/>";
Java

圖片路徑必須在運行時從 JVM 的工作目錄可存取。對於伺服器部署,請使用絕對路徑或將圖片作為 Base64 資料 URI 嵌入在 src 屬性中,以避免路徑解析問題。

圖片水印支持什麼文件格式?

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");
    }
}
Java

結合這三個可選參數可提供九種不同的定位選項,對應於垂直和水平對齊的每個交點。 對於需要在同一頁面上放置多個水印或只應用於特定頁面範圍的用案例,stamper 類提供更細緻的控制。 有關分層合成技術,請參閱背景和前景指南。

有哪些對齊選項可用?

applyWatermark 方法支持以下對齊常數:

垂直對齊 (VerticalAlignment):

  • TOP - 水印固定在頂邊
  • MIDDLE - 水印垂直居中
  • BOTTOM - 水印固定在底邊

水平對齊 (HorizontalAlignment):

  • LEFT - 水印固定在左邊
  • CENTER - 水印水平居中
  • RIGHT - 水印固定在右邊
請注意: 預設調用 applyWatermark(html) 無附加參數,等效於傳遞不透明度 50、VerticalAlignment.MIDDLE、HorizontalAlignment.CENTER。

將任何垂直值與任何水平值配對以便精確控制。 對於需要多重重疊蓋章的文件,例如右上角的徽標和斜向居中的草稿通知,將每個蓋章作為獨立的 applyWatermark 調用應用。 有關基於註解的覆蓋,請參閱註解範例。


如何使用 TextStamper 和 ImageStamper 應用高級水印?

applyWatermark 方法可以解決大多數水印需求,但 TextStamper 和 ImageStamper 類提供程式化控制,當需要精確的像素座標、頁面範圍目標或動態文字生成時。 這兩個類都屬於 com.ironsoftware.ironpdf.stamp package。

TextStamper 接受字串值並公開字體、字號、字體顏色、水平和垂直對齊、不透明度的屬性。 它還支持以整數(度數)表示的旋轉。 ImageStamper 接受文件路徑或字節陣列,並公開與 TextStamper 相同的對齊和不透明度控制。

stamper 類的主要優勢在於 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");
    }
}
Java

stamp 方法接受 List<Integer> 零索引的頁碼,能夠精確控制接收水印的頁面。 未提供頁面列表時,蓋章應用於所有頁面。 這使得 TextStamper 是動態生成水印的合適選擇,例如嵌入唯一的交易 ID、使用者名或時間戳到每個生成的 PDF。

重要: TextStamper 和 ImageStamper 類共享一個通用的 Stamper 基底類。 當您的應用程式動態生成水印時,請始終使用 stamper 方法,例如為每個生成的 PDF 嵌入唯一的交易 ID 或使用者名。

對於批量處理,例如為數百個 PDF 蓋上特定客戶的水印,在迴圈中載入和蓋章,每次迭代之前調用 PdfDocument。 IronPDF 獨立地處理每個文件,因此記憶體使用保持有限。 Java PDF 蓋章指南詳細介紹了 ImageStamper 和額外的蓋章選項,以及 IronPDF Java 文件提供完整的 API 參考。

TextStamper 與 applyWatermark 有何不同?

applyWatermark 方法為 HTML 字串提供快速、一致的多頁蓋章進行了優化。 TextStamper 和 ImageStamper 處理 applyWatermark 的情境:目標頁面子集,應用多個不同配置的獨特蓋章,或程式化地從資料庫或使用者輸入生成水印參數。 這兩種方法直接嵌入於 PDF 文件流中生產矢量品質的輸出,因此水印在再次保存、列印以及不支持可選內容層的 PDF 閱讀器中都能保留。

使用Apache PDFBox 程式庫進行水印的開發者會發現 IronPDF 的方法更簡單。 PDFBox 需要手動構建內容流和管理資源,而 applyWatermark 接受一個簡單的 HTML 字串。 Baeldung 上的 iText 水印指南展示了一個使用 iText 的類似任務,需要建立 PdfStampAnnotation 物件並通過 PdfCanvas 管道新增它們。IronPDF 將其簡化為單次方法調用。

提示: 為了程式上地驗證水印輸出,使用 PdfDocument.extractAllText() 提取文字內容並檢查預期的水印字串,或者使用 Stack Overflow 社群關於 Java PDF 操作的討論了解常見的排障模式。

Java PDF 水印的下一步是什麼?

本指南介紹了四種使用 IronPDF for Java 給 PDF 加水印的方法:通過 applyWatermark 字串進行簡單的文字水印,使用 HTML <img> 標籤的圖像水印,通過方法參數控制透明度和對齊,以及使用 TextStamper 和 ImageStamper 進行程式化蓋章應對高級用例。

開始您的免費試用,測試在 Java 應用程式中的水印功能。 試用包括對所有蓋章和水印功能的完全存取,評估期間無時間限制。 當您準備部署時,查看授權選項以找到適合您使用的級別。

準備好看看您還能做什麼嗎? 查看完整的教程頁面:IronPDF for Java 使用指南

常見問題

如何在Java中將文字水印新增到PDF?

載入您的PDF與PdfDocument.fromFile(),然後使用HTML字串呼叫pdf.applyWatermark()。IronPDF可呈現任何有效的HTML和CSS,因此您可以直接在元素上設置顏色、字體大小和不透明度。

我能在Java中使用圖片作為水印嗎?

可以。將<img>標籤放入您的HTML字串中並傳遞給applyWatermark()。具有透明背景的PNG文件會產生最清晰的效果。您也可以使用ImageStamper類別進行頁範圍定位。

我如何控制水印的不透明度?

將一個從0(完全透明)到100(完全不透明)的整數作為第二個參數傳遞給applyWatermark()。值在20到40之間工作良好,對於大多數文件不會遮擋正文。

我可以斜向旋轉水印嗎?

可以。在將它傳遞給applyWatermark()之前,先將一個CSStransform: rotate(-45deg)樣式加到您的HTML元素上。IronPDF在渲染時應用所有標準的CSS3變換。

applyWatermark與TextStamper有什麼不同?

applyWatermark()是對每頁應用相同HTML基礎印章的最快方法。TextStamper則提供程式化控制字體、旋轉和頁列表以僅針對特定頁面。

我如何將水印放置在特定位置?

將VerticalAlignment和HorizontalAlignment枚舉值作為第三和第四個參數傳遞給applyWatermark()。可用位置包括頂部、居中、底部與左、居中、右的組合。

我可以對不同頁面應用不同的水印嗎?

可以。使用TextStamper或ImageStamper並傳遞一個零索引的頁面號碼清單到stamp()方法,僅針對需要特定水印的頁面。

我可以在同一個PDF中結合文字和圖片水印嗎?

可以。在保存之前多次呼叫applyWatermark()或進行多次stamp()呼叫。每次呼叫都獨立地向PDF內容流新增一個新層。

Is it possible to apply multiple watermarks on the same page using IronPDF?

Yes, IronPDF allows the application of multiple watermarks on the same page by using separate `applyWatermark` calls or utilizing the `TextStamper` and `ImageStamper`. This provides flexibility for adding distinct stamps or logos at different positions within a single document.

What are the steps for applying a watermark in bulk to multiple PDFs with IronPDF?

To apply watermarks in bulk, iterate over your list of PDF documents, applying the watermark using the desired method (e.g., `applyWatermark`, `TextStamper`) on each, and save the changes with `saveAs`. This process ensures efficient memory usage as IronPDF handles each document independently.

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

準備好開始了嗎?

版本:2026.6剛剛發布

立即獲取您的免費 30天試用金鑰。
無需信用卡或帳戶建立
PDF的Java Maven程式庫
using Maven 安裝

版本: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
or
Java PDF JAR
下載 JAR

版本: 2026.6

手動安裝到您的專案中

有問題嗎?聯繫我們的開發團隊。

Key in blue circle

立即免費取得 30 天試用金鑰。

Your trial license will be sent to your email address

無任何限制。100% 解鎖。無需信用卡。

OR
bullet_checked無需信用卡或建立帳號無任何限制。100% 解鎖。無需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
預訂您的免費 即時演示
Booking Badge

全球數百萬工程師的信任

Iron Software的客戶商標
獲取您的無義務諮詢
填寫以下表格或發送電子郵件至sales@ironsoftware.com
您的詳細資訊始終保持機密。
全球數百萬工程師的信任
Iron Software的客戶商標
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
PDF的Java Maven程式庫
using Maven 安裝

版本: 2026.6

<dependency>
   <groupId>com.ironsoftware</groupId>
   <artifactId>ironpdf</artifactId>
   <version>2026.6.1</version>
</dependency>
https://central.sonatype.com/artifact/com.ironsoftware/ironpdf/2026.6.1
or
Java PDF JAR
下載 JAR

版本: 2026.6

手動安裝到您的專案中