C#中pdf生成图片文字水印类的实现实例

介绍

C#中的pdf生成图片文字水印类是一种可以在pdf文件上添加图片、文字以及水印的类库。利用该类库,我们可以在生成pdf文件过程中,轻松地添加图片或者文字元素,为其增加可视化和标识性。同时,图案水印也可以增加文件的安全性,防止如图像篡改等恶意行为。

PDF生成

PDF生成的基本要点

PDF生成的基本要点可以总结为以下几点:

生成pdf文档

设置pdf文档页面

为pdf文档添加内容

保存pdf文档

其中,每个步骤都需要通过类库来实现,关键在于如何正确地调用类库的函数以及设置各个参数。

PDF生成类库介绍

pdf生成类库在C#中有多种实现,其中一种较为常见的是iTextSharp。该类库提供了丰富的功能,如文本、图像、表格等的创建和插入,同时可以进行pdf文件的修改、拆分、合并等操作。同时,该类库的代码相对来说较为简单易懂,可以快速上手。

使用iTextSharp生成PDF

在使用iTextSharp进行PDF生成的过程中,需要使用到PdfWriter和Document类。其中,PdfWriter用来创建pdf文档对象,Document用来设置pdf文档页面并插入相关内容。

以下是一段iTextSharp生成pdf文件的示例代码:

using iTextSharp.text;

using iTextSharp.text.pdf;

// 创建pdf文件

using (Document document = new Document())

{

// 设置pdf页面大小

document.SetPageSize(new Rectangle(PageSize.A4));

// 设置pdf文档页面

PdfWriter writer = PdfWriter.GetInstance(document, new FileOutputStream("example.pdf"));

// 打开pdf文件

document.Open();

// 创建pdf文档内容

document.Add(new Paragraph("This is an example PDF document."));

// 关闭pdf文件

document.Close();

}

PDF添加水印

PDF添加图片水印

在使用iTextSharp添加图片水印时,需要使用到Image类和PdfGState类。其中,Image用来读取水印图像文件,PdfGState类则用来设置绘制透明度和旋转角度。

以下是一段iTextSharp添加图片水印的示例代码:

using iTextSharp.text;

using iTextSharp.text.pdf;

// 创建pdf文件

using (Document document = new Document())

{

// 设置pdf页面大小

document.SetPageSize(new Rectangle(PageSize.A4));

// 设置pdf文档页面

PdfWriter writer = PdfWriter.GetInstance(document, new FileOutputStream("example.pdf"));

// 打开pdf文件

document.Open();

// 添加图像水印

Image image = Image.GetInstance("watermark.png");

PdfContentByte content = writer.DirectContentUnder;

PdfGState state = new PdfGState();

state.FillOpacity = 0.2f;

content.SaveState();

content.SetGState(state);

image.SetAbsolutePosition(0, 0);

content.AddImage(image);

content.RestoreState();

// 创建pdf文档内容

document.Add(new Paragraph("This is an example PDF document."));

// 关闭pdf文件

document.Close();

}

代码解释:

上面的代码中,我们使用了GetInstance方法创建了一个PdfWriter实例,该实例的作用是将pdf文件写入到输出流中。其中,OutputStream用于保存pdf文件的路径和文件名。

接着,我们使用了Document类创建了一个pdf文档对象,然后使用PdfWriter打开了该文档。在文档对象中添加了一些普通的文本内容之后,我们就可以添加图像水印了。此时,我们通过PdfWriter的DirectContentUnder方法得到了一个PdfContentByte对象,该对象用于将水印绘制在pdf页面的底层,避免遮盖文本内容。我们设置了图像的绝对位置和透明度等属性,并通过AddImage方法将图像绘制到了pdf页面中。

PDF添加文字水印

在添加文字水印时,我们可以使用PdfStamper类,该类通常用于在pdf文档中修改、插入和删除已有的文本、图像和书签等对象。我们只需要创建PdfStamper实例,然后通过PdfContentByte对象在pdf页面中添加所需的内容即可。

以下是一段添加文字水印的示例代码:

using iTextSharp.text;

using iTextSharp.text.pdf;

// 打开pdf文件

using (var reader = new PdfReader("example.pdf"))

{

// 创建PdfStamper对象

using (PdfStamper stamper = new PdfStamper(reader, new FileStream("watermarked.pdf", FileMode.Create)))

{

// 获取pdf文档的页数

int pageCount = reader.NumberOfPages;

// 添加文字水印

string watermarkText = "CONFIDENTIAL";

BaseFont font = BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);

PdfContentByte content;

for (int i = 1; i <= pageCount; i++)

{

// 在每个页面的上层添加水印

content = stamper.GetOverContent(i);

content.BeginText();

content.SetFontAndSize(font, 36);

content.SetColorFill(BaseColor.GRAY);

content.SetTextMatrix(0, 0);

content.ShowTextAligned(Element.ALIGN_CENTER, watermarkText, reader.GetPageSize(i).Width / 2f, reader.GetPageSize(i).Height / 2f, 45f);

content.EndText();

}

}

}

代码解释:

该代码中,我们使用PdfReader创建了一个读取pdf文档的PdfStamper对象。我们通过GetOverContent方法获取pdf页面的上层,然后使用SetFontAndSize设置文本内容的字体和大小,使用SetTextColor设置文本颜色。通过SetTextMatrix设置文本矩阵,ShowTextAligned方法即可将文本水印添加到指定位置。

小结

本文介绍了在C#中使用iTextSharp类库实现PDF文件生成和添加图片文字水印的基本方法。对于需要在生成PDF文件时添加水印的情况,这些方法是非常实用的工具。

后端开发标签