/// <summary> /// 加平铺图片水印 /// </summary> /// <param name="inputfilepath"></param> /// <param name="outputfilepath"></param> /// <param name="ModelPicName"></param> /// <returns></returns> public static bool PDFWatermark(string inputfilepath, string outputfilepath, string ModelPicName) { //throw new NotImplementedException(); PdfReader pdfReader = null; PdfStamper pdfStamper = null; try { pdfReader = new PdfReader(inputfilepath); int numberOfPages = pdfReader.NumberOfPages; iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1); float width = psize.Width; float height = psize.Height; pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create)); PdfContentByte waterMarkContent; PdfGState gs = new PdfGState(); gs.FillOpacity = 0.2f; iTextSharp.text.Image imgTemp = iTextSharp.text.Image.GetInstance(ModelPicName); float imgWidth = (float) Math.Cos(Math.PI / 4) * imgTemp.Width + 100; float imgHeight = (float) Math.Sin(Math.PI / 4) * imgTemp.Width + 100; //每一页加水印,也可以设置某一页加水印 for (int i = 1; i <= numberOfPages; i++) { //waterMarkContent = pdfStamper.GetUnderContent(i);//内容下层加水印 waterMarkContent = pdfStamper.GetOverContent(i);//内容上层加水印 waterMarkContent.SetGState(gs); for (float left = 0; left < width; left += imgWidth) { for (float top = 0; top < height; top += imgHeight) { iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ModelPicName); image.GrayFill = 100;//透明度,灰色填充 //image.Rotation = 45;//旋转 image.RotationDegrees = 45;//旋转角度 image.SetAbsolutePosition(left, height - image.Height - top); Console.WriteLine(left +":"+ (height - image.Height - top)); waterMarkContent.AddImage(image); } } } //strMsg = "success"; return true; } catch (Exception ex) { throw ex; } finally { if (pdfStamper != null) pdfStamper.Close(); if (pdfReader != null) pdfReader.Close(); } }
原文:https://www.cnblogs.com/guxingzhe/p/11314325.html