介绍
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文件时添加水印的情况,这些方法是非常实用的工具。