在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
添加水印到PDF是文件安全、品牌化和版本控制的常见需求。 无论是将文件标记为机密、给正式报告加上品牌,还是防止未经授权的复制,水印都是一个必不可少的功能。
在C#中,开发人员有多个库可供选择,IronPDF 和 PDFSharp 是两个最受欢迎的选项。 然而,它们的方法、易用性、性能和许可结构存在显著差异。 本文详细比较了IronPDF和PDFsharp在为现有PDF添加水印方面的功能,提供了关于它们功能性、实施过程和自定义能力的见解。
通过阅读本文,您将清楚了解哪一个库最适合您的项目需求,这取决于其易用性、性能和功能可用性。
水印是文档上的图形或文本覆盖层,起到标识、阻止或品牌元素的作用。 水印可以是可见的,也可以是不可见的,这取决于它们的用途。
破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。
IronPDF 是一个高级的、功能丰富的 .NET 库,旨在简化 PDF 处理。 这对于寻找简便实现PDF操作任务(包括添加水印)的开发人员特别有用。
关键功能:
破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。
PDFsharp 是一个开源库,允许开发人员在 C# 中创建、编辑和操作 PDF。 虽然水印功能高度灵活,但相比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")
在这个代码示例中,我们可以看到使用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")
添加图像作为水印与添加文字一样简单,因为它们都使用相同的方法。 就像在文本示例中,我们只是创建一个新的水印字符串变量,包含我们想用作水印的内容(在这种情况下是我们的图像),然后像之前一样应用它。 这次,我们增加了自定义旋转变换和不透明度。
这种方法将图像水印叠加在指定位置,允许自定义位置和透明度。
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")
破损图片 添加自 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")
此方法会放置图片水印,但与IronPDF不同,不透明度必须单独处理。 与文本水印示例类似,利用PDFsharp在现有PDF上应用基于图像的水印需要更复杂和精细的设置,而IronPDF的水印API则简化了这一过程。
对于需要一种简单高效方法来为PDF添加水印的开发人员而言,IronPDF 是首选,因其用户友好的API和内置功能。 然而,如果预算限制是一个问题并且您不介意编写额外的代码,PDFSharp 是一个不错的开源替代方案。最终,最佳选择取决于您的项目需求、编程专业知识和可用资源。
🚀通过下载免费试用版亲自体验IronPDF,探索如何将您的C# PDF项目提升到一个新的水平!