使用itextsharp 在winfrom上显示pdf 并在每一页添加水印
时间: 2023-12-10 19:37:05 浏览: 74
首先,你需要将 itextsharp 库添加到你的项目中。可以通过 NuGet 包管理器搜索并安装 itextsharp 库。
接下来,你可以使用以下代码将 PDF 文件加载到 Windows 窗体中:
```csharp
// 加载 PDF 文件
PdfReader reader = new PdfReader("yourFilePath.pdf");
// 创建 PDF 渲染器
PdfRenderer renderer = new PdfRenderer(reader);
// 获取 PDF 的页面数量
int pageCount = reader.NumberOfPages;
// 遍历每一页,将其添加到窗体中
for (int i = 1; i <= pageCount; i++)
{
// 获取当前页的大小
SizeF pageSize = renderer.GetPageSize(i);
// 创建 PictureBox 控件来显示 PDF 页面
PictureBox pictureBox = new PictureBox();
pictureBox.Size = new Size((int)pageSize.Width, (int)pageSize.Height);
// 渲染 PDF 页面到 PictureBox 控件上
renderer.RenderPageToPictureBox(i, pictureBox);
// 将 PictureBox 控件添加到窗体上
this.Controls.Add(pictureBox);
}
// 关闭 PDF 读取器
reader.Close();
```
接下来,你可以使用以下代码给 PDF 中的每一页添加水印:
```csharp
// 加载 PDF 文件
PdfReader reader = new PdfReader("yourFilePath.pdf");
// 获取 PDF 的页面数量
int pageCount = reader.NumberOfPages;
// 创建 PDF 写入器
PdfWriter writer = new PdfWriter("outputFilePath.pdf");
// 创建 PDF 渲染器
PdfRenderer renderer = new PdfRenderer(reader, writer);
// 遍历每一页,将其添加水印后写入输出文件
for (int i = 1; i <= pageCount; i++)
{
// 获取当前页的大小
SizeF pageSize = renderer.GetPageSize(i);
// 创建 PdfCanvas 对象来写入水印
PdfCanvas canvas = new PdfCanvas(writer.GetPage(i));
// 设置字体和字号
canvas.SetFontAndSize(PdfFontFactory.CreateFont(), 40);
// 设置透明度
canvas.SetExtGState(new PdfExtGState().SetFillOpacity(0.5f));
// 写入水印文本
canvas.BeginText();
canvas.ShowTextAligned(new Paragraph("Watermark Text"), pageSize.Width / 2, pageSize.Height / 2, TextAlignment.CENTER);
canvas.EndText();
}
// 关闭 PDF 写入器和读取器
writer.Close();
reader.Close();
```
以上代码将在输出文件中添加水印并保存。你可以根据需要调整水印文本、字体、字号、透明度和位置等参数。