PdfStamper这个类能干嘛,写个例子
时间: 2024-09-13 12:05:30 浏览: 26
`PdfStamper` 是 iTextSharp 库中的一个类,iTextSharp 是用于处理 PDF 文件的流行开源库。`PdfStamper` 类主要用于对已存在的 PDF 文档进行操作,如添加注释、盖章、修改页面内容等,它是基于 iTextSharp 的 PdfCopy 类的增强版本。
以下是一个简单的使用 `PdfStamper` 实例化的例子,演示如何在PDF文档上添加文本注释:
```csharp
using iTextSharp.text;
using iTextSharp.text.pdf;
// 加载现有 PDF 文件
Document sourceDoc = new Document();
PdfReader reader = new PdfReader("source.pdf");
using (FileStream fs = File.Create("output_with_stamp.pdf")) {
// 创建一个新的 PdfCopy 对象,继承源文档的内容
PdfCopy copy = new PdfCopy(fs, reader.GetUnderlyingWriter());
// 使用 PdfStamper 实例化,将注释存储在一个 Stamp 对象上
using (PdfStamper stamper = new PdfStamper(copy, reader)) {
// 获取要添加注释的页面
PdfImportedPage page = stamper.GetOverContent(1); // 假设我们要在第一页添加注释
// 添加注释:这里使用了 iTextSharp 中的 iTextElement 如 TextFragment 和 AnnotText
var textFragment = new TextFragment("This is a sample annotation.");
float x = 50f; // 定义注释的位置
float y = 750f; // 预算注释在页面底部
// 创建注解
PdfAnnotation annot = new PdfAnnotation(PdfAnnotation.MARKER, new Rectangle(x, y, 100, 50), null);
annot.SetBorderWidth(0);
annot.SetRectangle(new Rectangle(x, y, 100, 50));
// 将文本片段添加到注解
annot.AddText(textFragment);
// 将注解添加到页面
stamper.GetOverContent(page.GetPageIndex()).AddAnnotation(annot);
}
}
// 关闭所有资源
reader.Close();
sourceDoc.Close();
```
这个例子中,我们从 "source.pdf" 文件创建了一个新的 PDF,然后在第一页上添加了一个带有文本注释的新注解。完成操作后,结果被保存到 "output_with_stamp.pdf" 文件中。