在PdfiumViewer库的pdfViewer1控件的Paint事件中给每一页pdf添加水印 写一下示例代码,把所有的using引用也带上
时间: 2023-11-28 22:47:12 浏览: 28
以下是在PdfiumViewer库的pdfViewer1控件的Paint事件中给每一页pdf添加水印的示例代码,同时带上所有的using引用:
```csharp
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using PdfiumViewer;
private void pdfViewer1_Paint(object sender, PaintEventArgs e)
{
// 获取pdf文档对象
PdfDocument document = pdfViewer1.Document;
if (document == null)
{
return;
}
// 获取pdf页面数量
int pageCount = document.PageCount;
// 定义水印文字
string watermarkText = "Confidential";
// 定义水印字体
Font watermarkFont = new Font("Arial", 50, FontStyle.Bold);
// 定义水印颜色
Color watermarkColor = Color.FromArgb(200, Color.Red);
// 定义水印透明度
float watermarkOpacity = 0.5f;
// 遍历每一页pdf,添加水印
for (int i = 0; i < pageCount; i++)
{
// 获取当前页的大小和渲染位置
SizeF pageSize = document.GetPageSize(i);
PointF pageLocation = document.GetPageLocation(i);
// 创建水印图像
Bitmap watermarkImage = new Bitmap((int)pageSize.Width, (int)pageSize.Height);
using (Graphics graphics = Graphics.FromImage(watermarkImage))
{
// 填充背景色
graphics.Clear(Color.Transparent);
// 绘制水印文字
SizeF textSize = graphics.MeasureString(watermarkText, watermarkFont);
PointF textLocation = new PointF((pageSize.Width - textSize.Width) / 2, (pageSize.Height - textSize.Height) / 2);
using (SolidBrush brush = new SolidBrush(watermarkColor))
{
using (StringFormat format = new StringFormat())
{
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
graphics.DrawString(watermarkText, watermarkFont, brush, textLocation, format);
}
}
// 设置水印透明度
ImageAttributes imageAttributes = new ImageAttributes();
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.Matrix33 = watermarkOpacity;
imageAttributes.SetColorMatrix(colorMatrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
// 绘制水印图像
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.DrawImage(watermarkImage, new RectangleF(0, 0, pageSize.Width, pageSize.Height), 0, 0, pageSize.Width, pageSize.Height, GraphicsUnit.Pixel, imageAttributes);
}
// 绘制水印图像到pdf页面
e.Graphics.DrawImage(watermarkImage, pageLocation);
}
}
```
上述代码中,我们首先获取pdf文档对象和页面数量,然后遍历每一页pdf,创建水印图像并绘制到pdf页面上。在创建水印图像时,我们使用Graphics对象绘制水印文字,并设置水印透明度,最后将水印图像绘制到pdf页面上。注意,在绘制水印图像时,我们需要指定渲染位置,即当前页的大小和渲染位置。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)