需引入iTextSharp.dll文件
using iTextSharp.text.pdf;
/// <summary>
/// PDF文件添加電子印章
/// </summary>
/// <param name="inputFilePath">傳入文件的路徑</param>
/// <param name="outFilePath">傳出文件的路徑</param>
/// <param name="modelPicPath">電子印章的圖片路徑</param>
/// <returns></returns>
public static bool PDFWaterMark(string inputFilePath, string outFilePath, string modelPicPath)
{
PdfReader pdfReader = null;
PdfStamper pdfStamper = null;
try
{
//讀取源路徑下的PDF文件
pdfReader = new PdfReader(inputFilePath);
//獲取當前pdf文件總頁碼數
int numberOfPages = pdfReader.NumberOfPages;
//獲取傳出文件路徑
pdfStamper = new PdfStamper(pdfReader, new FileStream(outFilePath, FileMode.Create));
//定義獲取pdf文檔頁內容
PdfContentByte waterMarkContent;
//创建一个iTextSharp.text.Image对象,将圖片对象添加到文档里面
iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(modelPicPath);
image.WidthPercentage = 0;
//image.GrayFill = -10;//透明度,灰色填充
//image.Rotation = -20;//旋转
//image.RotationDegrees = -12;//旋转角度
//每一页加水印,也可以设置某一页加水印
for (int i = 1; i <= numberOfPages; i++)
{
//獲取當前頁碼的大小尺寸
iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(i);
float width = psize.Width;
float height = psize.Height;
//内容下层加水印
waterMarkContent = pdfStamper.GetUnderContent(i);
//waterMarkContent = pdfStamper.GetOverContent(i);//内容上层加水印
//設置電子印章的位置(x,y:坐標點為左下角,頁邊距有36像素)
image.SetAbsolutePosition((width - image.Width - 50f), 60);
//將電子印章加入pdf頁內容
waterMarkContent.AddImage(image);
}
return true;
}
catch (Exception ex)
{
//報錯時發送郵件
throw ex;
}
finally
{
if (pdfStamper != null)
pdfStamper.Close();
if (pdfReader != null)
pdfReader.Close();
}
}