如何在C#中将印戳和水印添加到PDF

How to Stamp Text & Image on PDFs

This article was translated from English: Does it need improvement?
Translated
View the article in English

在 PDF 上添加文本和图像涉及将附加内容覆盖在现有 PDF 文档上。 这种内容通常称为“水印”,可以是文本、图像,或两者的组合。 水印通常用于在 PDF 上添加信息、标签、水印或注释。

IronPdf中可以使用总共4个印章。 本文将讨论TextStamperImageStamperHTMLStamperBarcodeStamper。 HTMLStamper特别强大,因为它可以利用所有HTML特性以及CSS样式。

快速入门:立即在 PDF 上添加文本水印

本快速指南演示如何使用 IronPDF 以最小的努力在 PDF 文件上添加文本水印。 通过利用 TextStamper 类,开发人员可以轻松地向任何 PDF 文档添加文本注释,例如水印或标签。 下面的示例显示了一个使用 ApplyStamp 方法在 PDF 上添加文本水印的简单实现,确保快速高效的水印过程。

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    var pdf = new IronPdf.PdfDocument("input.pdf");
    var stamper = new IronPdf.TextStamper("Confidential", 50, 50);
    pdf.ApplyStamp(stamper);
    pdf.SaveAs("stamped.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

最小工作流程(5个步骤)

  1. 下载 C# 库以添加文本和图像水印
  2. 创建并配置所需的水印类
  3. 使用 ApplyStamp 方法将水印应用到 PDF
  4. 使用 ApplyMultipleStamps 方法应用多个水印
  5. 指定要应用水印的特定页面


文本水印示例

首先,从 TextStamper 类创建一个对象。 该对象将包含所有配置,用于指定我们希望文本水印显示的方式。 将 TextStamper 对象传递给 ApplyStamp 方法。 Text 属性将是显示的文本。 此外,我们可以指定字体系列、字体样式以及水印的位置。

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-text.cs
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);

pdf.SaveAs("stampText.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create text stamper
Private textStamper As New TextStamper() With {
	.Text = "Text Stamper!",
	.FontFamily = "Bungee Spice",
	.UseGoogleFont = True,
	.FontSize = 30,
	.IsBold = True,
	.IsItalic = True,
	.VerticalAlignment = VerticalAlignment.Top
}

' Stamp the text stamper
pdf.ApplyStamp(textStamper)

pdf.SaveAs("stampText.pdf")
$vbLabelText   $csharpLabel

输出 PDF 文件

要在 TextStamper 中实现多行文本,请使用 <br> 标签,如同在 HTML 中。 例如,“line 1
line 2” 将在第一行产生“line 1”,在第二行产生“line 2”。

<hr

图像水印示例

类似于文本水印,我们首先从 ImageStamper 类创建一个对象,然后使用 ApplyStamp 方法将图像应用到文档中。 此方法的第二个参数还接受一个页面索引,可以用来将水印应用到一个或多个页面。 在下面的示例中,我们指定图像应在 PDF 的第 1 页上加盖。

{t:(所有页面索引均采用基于零的索引。

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-image.cs
using IronPdf;
using IronPdf.Editing;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);

pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing
Imports System

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create image stamper
Private imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}

' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)

pdf.SaveAs("stampImage.pdf")
$vbLabelText   $csharpLabel

输出 PDF 文件

<hr

应用多个水印

使用 ApplyMultipleStamps 方法通过传递一组水印者将多个水印应用到文档上。

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-multiple-stamps.cs
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create two text stampers
TextStamper stamper1 = new TextStamper()
{
    Text = "Text stamp 1",
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Left,
};

TextStamper stamper2 = new TextStamper()
{
    Text = "Text stamp 2",
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Right,
};

Stamper[] stampersToApply = { stamper1, stamper2 };

// Apply multiple stamps
pdf.ApplyMultipleStamps(stampersToApply);

pdf.SaveAs("multipleStamps.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create two text stampers
Private stamper1 As New TextStamper() With {
	.Text = "Text stamp 1",
	.VerticalAlignment = VerticalAlignment.Top,
	.HorizontalAlignment = HorizontalAlignment.Left
}

Private stamper2 As New TextStamper() With {
	.Text = "Text stamp 2",
	.VerticalAlignment = VerticalAlignment.Top,
	.HorizontalAlignment = HorizontalAlignment.Right
}

Private stampersToApply() As Stamper = { stamper1, stamper2 }

' Apply multiple stamps
pdf.ApplyMultipleStamps(stampersToApply)

pdf.SaveAs("multipleStamps.pdf")
$vbLabelText   $csharpLabel

输出 PDF 文件

<hr

水印位置

为了定义水印的位置,我们使用一个 3x3 网格,具有三个水平列和三个垂直行。 您可以选择水平对齐方式:左对齐、居中对齐和右对齐;以及垂直对齐方式:顶部对齐、中部对齐和底部对齐。 为了更加精确,您可以为每个位置调整水平和垂直偏移量。 请参阅下面的图像了解此概念的视觉表示。

class="content-img-align-center">
class="center-image-wrapper"> 水印位置
  • HorizontalAlignment:水印相对于页面的水平对齐。 默认设置是 HorizontalAlignment.Center。
  • VerticalAlignment:水印相对于页面的垂直对齐。 默认设置是 VerticalAlignment.Middle。
  • HorizontalOffset:水平偏移。 默认值为 0,默认单位为 IronPdf.Editing.MeasurementUnit.Percentage。 正值表示向右偏移,负值表示向左偏移。
  • VerticalOffset:垂直偏移。 默认值为 0,默认单位为 IronPdf.Editing.MeasurementUnit.Percentage。 正值表示向下偏移,负值表示向上偏移。

要指定 HorizontalOffsetVerticalOffset 属性,我们实例化 Length 类。 Length 的默认测量单位是百分比,但它也可以使用像英寸、毫米、厘米、像素和点数的测量单位。

代码

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-location.cs
using IronPdf.Editing;
using System;

// Create text stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    HorizontalAlignment = HorizontalAlignment.Center,
    VerticalAlignment = VerticalAlignment.Top,

    // Specify offsets
    HorizontalOffset = new Length(10),
    VerticalOffset = new Length(10),
};
Imports IronPdf.Editing
Imports System

' Create text stamper
Private imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {
	.HorizontalAlignment = HorizontalAlignment.Center,
	.VerticalAlignment = VerticalAlignment.Top,
	.HorizontalOffset = New Length(10),
	.VerticalOffset = New Length(10)
}
$vbLabelText   $csharpLabel

<hr

HTML 水印示例

还有另一个水印类,我们可以用它来添加文本和图像水印。 HtmlStamper 类可用来渲染带有 CSS 样式的 HTML 设计,然后将其加盖在 PDF 文档上。 HtmlBaseUrl 属性用于指定 HTML 字符串资产(如 CSS 和图像文件)的基 URL。

代码

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-html.cs
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create HTML stamper
HtmlStamper htmlStamper = new HtmlStamper()
{
    Html = @"<img src='https://ironpdf.com/img/svgs/iron-pdf-logo.svg'>
    <h1>Iron Software</h1>",
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the HTML stamper
pdf.ApplyStamp(htmlStamper);

pdf.SaveAs("stampHtml.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create HTML stamper
Private htmlStamper As New HtmlStamper() With {
	.Html = "<img src='https://ironpdf.com/img/svgs/iron-pdf-logo.svg'>
    <h1>Iron Software</h1>",
	.VerticalAlignment = VerticalAlignment.Top
}

' Stamp the HTML stamper
pdf.ApplyStamp(htmlStamper)

pdf.SaveAs("stampHtml.pdf")
$vbLabelText   $csharpLabel
  • Html:要在 PDF 上加盖的 HTML 片段。 所有对 JavaScript、CSS 和图像文件的外部引用将相对于 Stamper 类的 HtmlBaseUrl 属性。
  • HtmlBaseUrl:对于外部 CSS、JavaScript 和图像文件的引用的 HTML 基 URL 将是相对的。
  • CssMediaType:启用 Media="screen" CSS 样式和样式表。 通过设置 AllowScreenCss=false,IronPdf 从 HTML 渲染水印使用 CSS for media="print",就像在浏览器打印对话框中打印网页一样。 默认值是 PdfCssMediaType.Screen。

<hr

条形码水印示例

BarcodeStamper 类可以用来直接在现有 PDF 文档上加盖条形码。 水印支持包括 QRCode、Code128 和 Code39 在内的条形码类型。

代码

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-barcode.cs
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create barcode stamper
BarcodeStamper barcodeStamper = new BarcodeStamper("IronPdf!!", BarcodeEncoding.Code39)
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the barcode stamper
pdf.ApplyStamp(barcodeStamper);

pdf.SaveAs("stampBarcode.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create barcode stamper
Private barcodeStamper As New BarcodeStamper("IronPdf!!", BarcodeEncoding.Code39) With {.VerticalAlignment = VerticalAlignment.Top}

' Stamp the barcode stamper
pdf.ApplyStamp(barcodeStamper)

pdf.SaveAs("stampBarcode.pdf")
$vbLabelText   $csharpLabel
  • Value:条形码的字符串值。
  • BarcodeType:条形码的编码类型,支持的类型包括 QRCode、Code128 和 Code39。默认是 QRCode。
  • Width:渲染的条形码的宽度(以像素为单位)。 默认是 250px。
  • Height:渲染的条形码的高度(以像素为单位)。 默认是 250px。

<hr

探索水印选项

除了上面提到和解释的选项外,以下是水印类可用的更多选项。

  • Opacity:允许水印变为透明。 0 是完全不可见,100 是完全不透明。
  • Rotation:将水印顺时针旋转指定的角度,从 0 到 360 度。
  • MaxWidth:输出水印的最大宽度。
  • MaxHeight:输出水印的最大高度。
  • MinWidth:输出水印的最小宽度。
  • MinHeight:输出水印的最小高度。
  • Hyperlink:使此 Stamper 的加盖元素具有点击超链接。 注意:通过 link(a) 标签创建的 HTML 链接不由水印保留。
  • Scale:对水印应用百分比缩放,以使其变大或缩小。 默认是 100(百分比),没有效果。
  • IsStampBehindContent:设置为 true 以在内容后加盖水印。 如果内容是不透明的,水印可能是不可见的。
  • WaitFor:一个方便的包装器,用于等待各种事件或仅等待一定时间。
  • Timeout:渲染超时时间(以秒为单位)。 默认值是 60。

常见问题解答

在PDF上印戳文本和图像的目的是什么?

在PDF上印戳文本和图像可让您在现有PDF文档上叠加额外内容,如标签、水印或注释。 这通过IronPDF的各种印戳类实现,如`TextStamper`和`ImageStamper`。

如何使用C#开始在PDF上印戳文本和图像?

要开始使用C#在PDF上印戳文本和图像,请通过NuGet安装IronPDF库,配置合适的印戳类,并使用ApplyStamp方法将印戳应用到PDF。

我可以在IronPDF中使用哪些类型的印戳用于PDF印戳?

IronPDF提供多种印戳类型:用于文本的`TextStamper`,用于图像的`ImageStamper`,用于带CSS的HTML内容的`HTMLStamper`,以及用于QRCode和其他条码类型的`BarcodeStamper`。

如何使用C#在PDF的特定页面上应用文本印戳?

在IronPDF中,您可以通过创建一个`TextStamper`对象,配置其属性,并使用带页面索引参数的ApplyStamp方法来目标特定页面。

是否可以在PDF上同时应用多个印戳?

是的,IronPDF允许您使用ApplyMultipleStamps方法一次应用多个印戳,您可以传递配置好的印戳对象数组。

对于PDF中的印戳定位,哪些定制选项可用?

IronPDF允许使用3x3网格定制印戳定位,包括左右对齐、中间对齐等水平位置选项,以及顶部、中部、底部等垂直位置选项,还有额外的偏移设置。

可以使用HTML内容在PDF上印戳吗?

可以,IronPDF的`HTMLStamper`类允许带CSS样式的HTML内容被印戳到PDF上,为复杂设计提供了灵活的解决方案。

IronPDF支持哪些条码类型用于PDF印戳?

IronPDF的`BarcodeStamper`支持多种条码类型,包括QRCode、Code128和Code39,允许您将条码信息加入PDF文档。

IronPDF提供哪些高级选项用于定制PDF印戳?

IronPDF提供了用于PDF印戳的高级定制选项,包括不透明度、旋转、最大宽度、最大高度、超链接、比例、内容印戳背景、等待时间和超时时间等属性。

针对使用IronPDF的PDF印戳有哪些常见的故障排除提示?

确保您已安装正确版本的IronPDF,验证您印戳对象的配置,并检查您的代码是否正确指定了印戳应用的页面索引或区域。

IronPDF 是否完全兼容 .NET 10,以便在 PDF 上添加文本和图像?

是的——IronPDF 完全兼容 .NET 10。诸如 `TextStamper`、`ImageStamper`、`ApplyStamp`、`ApplyMultipleStamps` 等图章功能以及对齐/自定义选项,无需额外配置即可在 .NET 10 项目中直接使用。这些功能在 .NET 10 下的所有平台和项目类型中均受支持。

Chaknith Bin
软件工程师
Chaknith 在 IronXL 和 IronBarcode 工作。他在 C# 和 .NET 方面有着深厚的专业知识,帮助改进软件并支持客户。他从用户互动中获得的见解有助于更好的产品、文档和整体体验。
准备开始了吗?
Nuget 下载 16,154,058 | 版本: 2025.11 刚刚发布