
水印是出現在現有文件內容前面或後面的文字或圖像,就像郵票一樣。例如,您可以對包含敏感資訊的頁面套用「機密」浮水印。水印可用於保護機密資訊並表明法律文件的有效性。您還可以在任何紙幣上加水印,這有助於防止偽造。在本文中,我們將討論 PDF 文件中與浮水印相關的功能。
PDF 操作 REST API
Aspose.PDF Cloud 是我們屢獲殊榮的 REST API,提供創建、操作以及渲染 PDF 文件為其他支援格式(包括 DOCX、PPTX、XLSX、XPS、SVG、JPEG]4、XPS、SVG、JPEG Java for Java.2.包裝器。它提供了 Cloud REST API 的所有功能,包括使用 Java 程式語言為 PDF 新增浮水印的功能。
為了使用 Java Cloud SDK,第一步是安裝 Aspose.PDF Cloud SDK for Java。可以透過Maven下載 Cloud SDK | 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 文件添加文字浮水印
- 首先,您需要根據兩個變數指定您的客戶端 ID 和客戶端金鑰詳細資訊。
- 其次,透過提供客戶端 ID 和客戶端金鑰作為參數來建立 PdfApi 類別的物件。
- 第三,建立一個 TextState 類別的對象,其中我們指定字體名稱為 Arial,字體大小為 14。
- 現在我們需要建立 TextStamp 類別的實例。在使用該物件時,我們將指定 HorizontalAlignment 作為中心,使用 textState(..) 方法指定文字戳值、字體大小和字體類型詳細信息,其中上述步驟中創建的 TextState 物件作為參數傳遞。邊距細節和VerticalAlignment 也指定為Center。
- 為了在背景中顯示 TextStamp,使用了 background(..) 方法並將參數設為 true。
- 此外,還指定了圖章的不透明度、旋轉角度、縮放係數和 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);
// 呼叫方法將TextStamp 發佈到PDF檔案的第一頁
com.aspose.asposecloudpdf.model.AsposeResponse response = pdfApi.postPageTextStamps(sourceFileName, pageNumber, stamps,cloudStorage, folder);

圖 1:- 新增至 PDF 文件的文字印章。
上述範例所用到的範例檔案可以從以下連結下載:
如何使用 Java 在 PDF 中新增圖像浮水印
只需更少的程式碼行,就可以輕鬆地將圖像浮水印添加到 PDF 文件中。下面給出瞭如何將 JPEG 影像新增至 PDF 檔案的步驟。
- 首先,步驟是建立一個 PdfApi 對象,同時傳遞 ClientSecret 和 ClientID 作為參數。
- 下一步是建立 ImageStamp 對象,我們在其中定義要加蓋印章的圖像檔案、邊距細節和 VerticalAlignment。在我們的例子中,我們從 VerticalAlignment 枚舉中選擇了 Center 值。
- 設定 ImageStamp.background(True) 以便影像出現在頁面內容後面。否則,它將出現在頁面內容的頂部。
- 建立一個ImageStamp類型的List對象,並將第二步驟建立的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<>();
// 將 ImageStamp 加入到 ImageStamps 清單中
stamps.add(stampObject);
// 呼叫API方法將浮水印圖像添加到PDF
AsposeResponse response = pdfApi.postPageImageStamps(file, pageNumber, stamps,null, null);

圖像 2:- 已新增至 PDF 文件的圖像印章。
上述範例中使用的範例檔案可以從以下連結下載。
新增 PDF 頁面作為浮水印戳
除了文字和圖像之外,PDF 頁面還可以作為浮水印添加到現有的 PDF 文件中。下面給出瞭如何實現這些要求的步驟。
- 首先,建立一個 PdfApi 類別的對象,並傳遞客戶端 ID 和客戶端金鑰作為參數。
- 其次,建立 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.)
// 我們已經設定了-ve 頂部邊距以將水印 PDF 向上移動
.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);
// 呼叫API方法加入PDF水印
AsposeResponse response = pdfApi.postPagePdfPageStamps(sourcePDF, pageNumber, stamps,null, null);

圖 3:新增為浮水印的 PDF 檔案的預覽。
上述範例中使用的範例檔案可以從以下連結下載
加頁碼作為浮水印
從可用性角度來看,頁碼細節非常重要,因為它們可以清楚地向讀者表明文件的長度以及讀者正在瀏覽的頁面。
- 一旦我們建立了 PdfApi 實例,就建立 PageNumberStamp 類別的物件。
- 使用 PageNumberStamp 類別的方法 value(…) 來指定 PageNumber 戳記的模式。
- 另一個重要方法是 setStartingNumber(..),它指示頁碼浮水印從哪個計數開始。
- 程式碼的其他部分包括邊距細節、不透明度、旋轉角度、oom 因子等與上面的程式碼片段相同。
- 我們需要指定放置頁碼浮水印的startPageNumber和endPageNumber。
- 最後,呼叫 postDocumentPageNumberStamps(…),它將輸入的 PDF 檔案、PageNumberStamp 物件、起始和結束頁面資訊作為參數,並在原始檔案中附加頁碼浮水印。
// 完整範例和原始程式碼,請造訪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;
// 呼叫API方法加入PDF水印
AsposeResponse response = pdfApi.postDocumentPageNumberStamps(sourcePDF, stampObject,startPageNumber, endPageNumber, null, null);

圖 4:- PDF 中頁碼作為浮水印的預覽。
上述範例所用到的範例檔案可以從以下連結下載:
快速提示
Aspose.PDF Cloud SDK for Java 功能非常強大,只需幾行程式碼,您就可以將 JPEG、EPUB、LaTeX、HTML、PS、XSLFo、XPS、18、XSLFo、[XPS]2021223 24] 格式。欲了解更多信息,請訪問產品頁面。
結論
在這篇文章中,我們了解如何使用 Aspose.PDF Cloud SDK for Java 輕鬆地在現有 PDF 文件中新增文字、圖像、PDF 和頁碼資訊的步驟。請注意,我們的雲端 SDK 是開源的,您也可以下載其完整的原始碼並根據您的要求進行修改。完整的原始碼可以從GitHub儲存庫下載。如果您有任何相關疑問,請隨時透過免費支援論壇聯繫。