產品比較

探索 PDFsharp 為 PDF 添加浮水印的最佳替代方案

Kannaopat Udonpant
坎納帕特·烏頓潘
2025年3月27日
分享:

添加水印 到PDF是文件安全、品牌化和版本控制的常見需求。 無論是將文件標記為機密、為正式報告品牌化,或防止未授權的複製,浮水印都是一個基本功能。

在 C# 中,開發人員有多個庫可供選擇,其中IronPDFPDFSharp是最受歡迎的選擇之一。 然而,它們的方法、易用性、性能和授權結構大不相同。 本文提供了 IronPDF 和 PDFsharp 在為現有 PDF 添加水印方面的詳細比較,並深入分析了它們的功能、實施過程和自定義能力。

在本文結束時,您將清楚了解基於易用性、性能和功能可用性,哪個庫最適合您的項目需求。

了解 PDF 水印

什麼是水印?

浮水印是在文件上的圖形或文字的覆蓋層,它作為識別符號、威懾或品牌元素。 浮水印可以是可見的或不可見的,這取決於其用途。

水印類型

  • 文字浮水印 – 通常是一個半透明的覆蓋層,帶有如「機密」或「草稿」的訊息。
  • 圖片浮水印 – 嵌入文件中的標誌、徽章或圖形。
  • 透明水印-一個不妨礙文件可讀性的細微品牌標記。
  • 加蓋水印—更顯眼的粗體標記,確保可見性。

常見用例

  • 安全與保護 - 通過將文件標記為專屬文件來防止未經授權的複製。
  • 品牌化 – 添加公司标志或签名,以在文档中保持品牌一致性。
  • 版本控制 – 標記草稿、最終版本或文件修訂版。

IronPDF 和 PDFsharp 概覽

IronPDF

損壞的圖片 從Pixabay添加,從你的文件中選擇或拖放圖片到這裡。

IronPDF 是一個高級、功能豐富的 .NET 庫,旨在簡化 PDF 處理。 這對於尋找簡易 PDF 操作任務實現的開發者特別有用,包括加上浮水印。

主要特點:

  • 簡單直觀的 API,只需最少的程式碼。
  • 支援文字和圖像浮水印,並提供自訂選項。
  • 提供不透明度控制、定位和旋轉以精確放置。
  • 相容於 .NET 6+、.NET Core 和 .NET Framework。
  • 可用於永久授權模式以供長期使用。
  • 其他功能包括PDF 註解HTML 轉 PDF 轉換以及數位簽章

PDFsharp

損壞的圖片 從Pixabay添加,從你的文件中選擇或拖放圖片到這裡。

PDFsharp 是一個開源庫,允許開發人員在 C# 中創建、編輯和操作 PDF。 雖然具有很高的靈活性,但相比於IronPDF,浮水印需要更多的手動操作。

主要特點:

  • 免費且開源,使其對於預算有限的專案而言具有成本效益。
  • 提供對 PDF 繪圖操作的低層級控制,包括描邊圖形路徑和透明圖形路徑。
  • 支持文本和圖像水印,但需要額外的代碼進行轉換。
  • 適用於 .NET Framework 和 .NET Core(通過 PDFSharpCore)。
  • 缺乏內建的高階浮水印功能,要求開發者手動實現如不透明度和旋轉等特性。

使用 IronPDF 添加浮水印

IronPDF 提供一個簡單的 API,使開發人員可以僅使用幾行程式碼高效地應用浮水印,輕鬆而高效地簡化您的 PDF 浮水印處理任務,無需任何複雜或手動的設置。 IronPDF 的浮水印工具可以使用 HTML/CSS 字串作為浮水印,如下所示,讓您完全控制浮水印的顯示方式。

文字浮水印範例

using IronPdf;
const string filename = "existing.pdf";
PdfDocument pdf = PdfDocument.FromFile(filename);
string watermark = "<h1 style='color:red'>Confidential!</h1>";
pdf.ApplyWatermark(watermark);
pdf.SaveAs("watermarked.pdf");
using IronPdf;
const string filename = "existing.pdf";
PdfDocument pdf = PdfDocument.FromFile(filename);
string watermark = "<h1 style='color:red'>Confidential!</h1>";
pdf.ApplyWatermark(watermark);
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Private Const filename As String = "existing.pdf"
Private pdf As PdfDocument = PdfDocument.FromFile(filename)
Private watermark As String = "<h1 style='color:red'>Confidential!</h1>"
pdf.ApplyWatermark(watermark)
pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

探索 PDFsharp 添加水印到 PDF 的最佳替代方案:圖 3 - 文字水印輸出

在此代碼範例中,我們可以看到使用 IronPDF 為現有的 PDF 檔案添加浮水印是多麼簡單。 在這裡,我們使用FromFile方法載入了現有的PDF。 然後,我們創建一個簡單的字串格式浮水印,並使用ApplyWatermark將其應用到 PDF。 如您在輸出圖像中所見,這已經在我們的 PDF 上加上了一個簡單的文字串「Confidential」作為水印。

圖片浮水印範例

using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("existing.pdf");
string watermark = "<img src='https://ironsoftware.com/img/products/ironpdf-logo-text-dotnet.svg'>";
pdf.ApplyWatermark(watermark, rotation: 45, opacity: 80);
pdf.SaveAs("watermarked.pdf");
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("existing.pdf");
string watermark = "<img src='https://ironsoftware.com/img/products/ironpdf-logo-text-dotnet.svg'>";
pdf.ApplyWatermark(watermark, rotation: 45, opacity: 80);
pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("existing.pdf")
Private watermark As String = "<img src='https://ironsoftware.com/img/products/ironpdf-logo-text-dotnet.svg'>"
pdf.ApplyWatermark(watermark, rotation:= 45, opacity:= 80)
pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

探索為 PDFsharp 添加浮水印到 PDF 的最佳替代方案:圖 4

將圖像作為浮水印添加與添加文字同樣簡單,因為它們都使用相同的方法。 就像在文本示例中一樣,我們只需建立一個新的浮水印字串變數,其中包含我們想用作浮水印的內容(在此情況下為我們的圖片),然後像以前一樣應用它。 這一次,我們新增了自訂的旋轉變換和不透明度。

此方法在指定位置疊加圖片浮水印,允許自訂位置和透明度。

使用 PDFsharp 添加水印

PDFsharp 需要開發人員使用其 GDI+ 繪圖 API 手動渲染文本和圖像。 要給現有的 PDF 文件加上浮水印,請建立一個 XGraphics 物件來進行繪圖,並套用所需的內容。

文字浮水印範例

using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
const string filename = "existing.pdf";
var document = PdfReader.Open(filename, PdfDocumentOpenMode.Modify);
foreach (var page in document.Pages)
{
    var gfx = XGraphics.FromPdfPage(page); // get an XGraphics object
    gfx.TranslateTransform(page.Width / 2, page.Height / 2);
    gfx.RotateTransform(Math.Atan(page.Height / page.Width)); // Rotate for diagonal watermark
    var font = new XFont("Arial", 40);
    var brush = new XSolidBrush(XColor.FromArgb(128, XColors.Red));
    gfx.DrawString("WATERMARK", font, brush, new XPoint(0, 0)); // Drawing beneath the existing content
}
document.Save("watermarked.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;
const string filename = "existing.pdf";
var document = PdfReader.Open(filename, PdfDocumentOpenMode.Modify);
foreach (var page in document.Pages)
{
    var gfx = XGraphics.FromPdfPage(page); // get an XGraphics object
    gfx.TranslateTransform(page.Width / 2, page.Height / 2);
    gfx.RotateTransform(Math.Atan(page.Height / page.Width)); // Rotate for diagonal watermark
    var font = new XFont("Arial", 40);
    var brush = new XSolidBrush(XColor.FromArgb(128, XColors.Red));
    gfx.DrawString("WATERMARK", font, brush, new XPoint(0, 0)); // Drawing beneath the existing content
}
document.Save("watermarked.pdf");
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf.IO
Private Const filename As String = "existing.pdf"
Private document = PdfReader.Open(filename, PdfDocumentOpenMode.Modify)
For Each page In document.Pages
	Dim gfx = XGraphics.FromPdfPage(page) ' get an XGraphics object
	gfx.TranslateTransform(page.Width \ 2, page.Height \ 2)
	gfx.RotateTransform(Math.Atan(page.Height \ page.Width)) ' Rotate for diagonal watermark
	Dim font = New XFont("Arial", 40)
	Dim brush = New XSolidBrush(XColor.FromArgb(128, XColors.Red))
	gfx.DrawString("WATERMARK", font, brush, New XPoint(0, 0)) ' Drawing beneath the existing content
Next page
document.Save("watermarked.pdf")
$vbLabelText   $csharpLabel

損壞的圖片 從Pixabay添加,從你的文件中選擇或拖放圖片到這裡。

此實現手動在每頁添加浮水印,需精確定位和自訂設定。 雖然它可以處理與IronPDF範例類似的輸出,但PDFsharp需要更多的程式碼,且具有更複雜的方法,來處理將文字浮水印應用於現有內容或新的PDF文件。

圖片浮水印範例

using PdfSharp.Pdf;
using PdfSharp.Drawing;
var document = PdfReader.Open("sample.pdf", PdfDocumentOpenMode.Modify);
XImage watermark = XImage.FromFile("watermark.png");
foreach (var page in document.Pages)
{
    XGraphics gfx = XGraphics.FromPdfPage(page);
    gfx.DrawImage(watermark, 50, 100, watermark.PixelWidth / 2, watermark.PixelHeight / 2);
}
document.Save("watermarked.pdf");
using PdfSharp.Pdf;
using PdfSharp.Drawing;
var document = PdfReader.Open("sample.pdf", PdfDocumentOpenMode.Modify);
XImage watermark = XImage.FromFile("watermark.png");
foreach (var page in document.Pages)
{
    XGraphics gfx = XGraphics.FromPdfPage(page);
    gfx.DrawImage(watermark, 50, 100, watermark.PixelWidth / 2, watermark.PixelHeight / 2);
}
document.Save("watermarked.pdf");
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Private document = PdfReader.Open("sample.pdf", PdfDocumentOpenMode.Modify)
Private watermark As XImage = XImage.FromFile("watermark.png")
For Each page In document.Pages
	Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
	gfx.DrawImage(watermark, 50, 100, watermark.PixelWidth / 2, watermark.PixelHeight / 2)
Next page
document.Save("watermarked.pdf")
$vbLabelText   $csharpLabel

探索 PDFsharp 添加浮水印到 PDF 的最佳替代方案:圖 6

此方法放置一個圖像浮水印,但與IronPDF不同,透明度必須單獨處理。 與文字浮水印範例類似,使用PDFsharp在現有PDF上應用基於圖像的浮水印需要更精細、複雜的設置,相較之下,IronPDF的浮水印API更加簡便。

IronPDF 和 PDFsharp 的浮水印功能比較

易於使用

  • IronPDF:提供高階功能,以最少的程式碼簡化浮水印處理。 它抽象化了複雜的操作,非常適合需要快速且高效解決方案的開發人員。
  • PDFSharp:需要使用圖形 API 手動實現,這會增加複雜性和開發時間。這更適合需要對渲染進行細緻控制但能夠應對額外編程的開發人員。

性能

  • IronPDF:優化以進行高速 PDF 處理,能夠有效地處理大型文檔,且不會出現顯著的性能下降。
  • PDFSharp:雖然輕量,但處理大型 PDF 時可能需要進一步的優化。 相較於IronPDF,具有多重轉換的複雜浮水印任務可能會導致效能較慢。

自定義選項

  • IronPDF:內建支持不透明度、旋轉、定位和字體大小自訂。 用戶可以輕鬆調整設定而不需深入複雜的渲染邏輯。
  • PDFSharp:需要額外的程式碼來處理不透明度、透明效果和轉換處理。 雖然強大,但它需要開發人員進行更高層次的自訂,其中包括使用 var 格式來執行特定的渲染任務。

相容性

  • IronPDF:完全相容於 .NET 6+、.NET Core 和 .NET Framework,使其適合現代和傳統應用程式。
  • PDFSharp:支援 .NET Framework 和 .NET Core(通過 PDFSharpCore),但可能缺乏某些新框架中提供的現代功能。

授權及費用

  • IronPDF:這是一款商業產品,需要付費授權,但包括永久授權選項、客戶支持以及持續更新。
  • PDFSharp:開源且免費使用,對於喜歡不受限授權模式但願意自行處理支持和更新的開發人員來說,是一種具有成本效益的解決方案。

結論

探索 PDFsharp 添加水印至 PDF 的最佳替代方案:圖 7

對於需要簡便且有效的方法來給 PDF 添加水印的開發人員,IronPDF 是最佳選擇,因為它擁有易於使用的 API 和內建功能。 然而,如果預算限制是個問題,而且您不介意撰寫額外的代碼,PDFSharp 是一個不錯的開源替代方案。最終,最佳選擇取決於您的專案需求、編程專業知識和可用資源。

🚀立即下載免費試用版,親自體驗 IronPDF,探索其如何將您的 C# PDF 專案提升到下一個層次!

Kannaopat Udonpant
坎納帕特·烏頓潘
軟體工程師
在成為軟體工程師之前,Kannapat 在日本北海道大學完成了環境資源博士學位。在攻讀學位期間,Kannapat 也成為了車輛機器人實驗室的成員,該實驗室隸屬於生物生產工程學系。2022 年,他利用自己的 C# 技能,加入了 Iron Software 的工程團隊,專注於 IronPDF 的開發。Kannapat 珍視這份工作,因為他可以直接向負責撰寫大部分 IronPDF 程式碼的開發人員學習。除了同儕學習外,Kannapat 還享受在 Iron Software 工作的社交方面。當他不在撰寫程式碼或文件時,Kannapat 通常會在 PS5 上玩遊戲或重看《最後生還者》。
< 上一頁
探索適用於 .NET 的 QuestPDF 浮水印最佳替代方案
下一個 >
探索在 .NET 中將圖像添加到 PDF 的最佳替代方案