C#中pdf生成图片文字水印类的实现实例
导读:收集整理的这篇文章主要介绍了C#中pdf生成图片文字水印类的实现实例,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#实现的pDF生成图片文字水印类,结合完整实例形式分析了C#针对PDF文件的创建、添加文字、水印等相关...
收集整理的这篇文章主要介绍了C#中pdf生成图片文字水印类的实现实例,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#实现的pDF生成图片文字水印类,结合完整实例形式分析了C#针对PDF文件的创建、添加文字、水印等相关操作技巧,需要的朋友可以参考下本文实例讲述了C#实现的pdf生成图片文字水印类。分享给大家供大家参考,具体如下:
public class PDFSetWaterMark{ /// summary> /// 创建一个显示指定图片的pdf /// /summary> /// param name="picPDFPath"> /param> /// param name="picPath"> /param> /// returns> /returns> public static bool CreatePDFByPic(string picPdfPath, string picPath) { //新建一个文档 Document doc = new Document(); try { //建立一个书写器(WrITer)与document对象关联 PdfWriter.GetInstance(doc, new FileStream(picPdfPath, FileMode.Create, FileAccess.ReadWrite)); //打开一个文档 doc.OPEn(); //向文档中添加内容 Image img = Image.GetInstance(picPath); //img.SetAbsolutePosition(); doc.Add(img); return true; } catch (Exception ex) { return false; throw ex; } finally { if (doc != null) { doc.Close(); } } } /// summary> /// 加图片水印 /// /summary> /// param name="inputfilepath"> /param> /// param name="outputfilepath"> /param> /// param name="modelPicName"> /param> /// param name="top"> /param> /// param name="left"> /param> /// returns> /returns> public static bool PDFWatermark(string inputfilepath, string outputfilepath, string ModelPicName, float top, float left) { //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; iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ModelPicName); image.GrayFill = 20; //透明度,灰色填充 //image.Rotation//旋转 //image.Rotationdegrees//旋转角度 //水印的位置 if (left 0) { left = width / 2 - image.Width + left; } //image.SetAbsolutePosition(left, (height - image.Height) - top); image.SetAbsolutePosition(left, (height / 2 - image.Height) - top); //每一页加水印,也可以设置某一页加水印 for (int i = 1; i = numberOfPages; i++) { //waterMarkContent = pdfStamper.GetUnderContent(i); //内容下层加水印 waterMarkContent = pdfStamper.GetOverContent(i); //内容上层加水印 waterMarkContent.AddImage(image); } //strMsg = "success"; return true; } catch (Exception ex) { throw ex; } finally { if (pdfStamper != null) pdfStamper.Close(); if (pdfReader != null) pdfReader.Close(); } } /// summary> /// 添加普通偏转角度文字水印 /// /summary> /// param name="inputfilepath"> /param> /// param name="outputfilepath"> /param> /// param name="waterMarkName"> /param> /// param name="permission"> /param> public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName) { PdfReader pdfReader = null; PdfStamper pdfStamper = null; try { pdfReader = new PdfReader(inputfilepath); pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create)); int total = pdfReader.NumberOfPages + 1; iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1); float width = psize.Width; float height = psize.Height; PdfContentByte content; BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMfanG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); PdfGState gs = new PdfGState(); for (int i = 1; i total; i++) { content = pdfStamper.GetOverContent(i); //在内容上方加水印 //content = pdfStamper.GetUnderContent(i); //在内容下方加水印 //透明度 gs.FillOpacity = 0.3f; content.SetGState(gs); //content.SetGrayFill(0.3f); //开始写入文本 content.BeginText(); content.SetColorFill(BaseColor.LIGHT_GRAY); content.SetFontAndSize(font, 100); content.SetTextMatrix(0, 0); content.ShowTextAligned(Element.ALIGN_center, waterMarkName, width / 2 - 50, height / 2 - 50, 55); //content.SetColorFill(BaseColor.BLACK); //content.SetFontAndSize(font, 8); //content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, 0, 0, 0); content.EndText(); } } catch (Exception ex) { throw ex; } finally { if (pdfStamper != null) pdfStamper.Close(); if (pdfReader != null) pdfReader.Close(); } } /// summary> /// 添加倾斜水印 /// /summary> /// param name="inputfilepath"> /param> /// param name="outputfilepath"> /param> /// param name="waterMarkName"> /param> /// param name="userPassWord"> /param> /// param name="ownerPassWord"> /param> /// param name="permission"> /param> public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName, string userPassWord, string ownerPassWord, int permission) { PdfReader pdfReader = null; PdfStamper pdfStamper = null; try { pdfReader = new PdfReader(inputfilepath); pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create)); // 设置密码 //pdfStamper.SetEncryption(false,userPassWord, ownerPassWord, permission); int total = pdfReader.NumberOfPages + 1; PdfContentByte content; BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); PdfGState gs = new PdfGState(); gs.FillOpacity = 0.2f; //透明度 int j = waterMarkName.Length; char c; int rise = 0; for (int i = 1; i total; i++) { rise = 500; content = pdfStamper.GetOverContent(i); //在内容上方加水印 //content = pdfStamper.GetUnderContent(i); //在内容下方加水印 content.BeginText(); content.SetColorFill(BaseColor.DARK_GRAY); content.SetFontAndSize(font, 50); // 设置水印文字字体倾斜 开始 if (j > = 15) { content.SetTextMatrix(200, 120); for (int k = 0; k j; k++) { content.SetTextRise(rise); c = waterMarkName[k]; content.ShowText(c + ""); rise -= 20; } } else { content.SetTextMatrix(180, 100); for (int k = 0; k j; k++) { content.SetTextRise(rise); c = waterMarkName[k]; content.ShowText(c + ""); rise -= 18; } } // 字体设置结束 content.EndText(); // 画一个圆 //content.Ellipse(250, 450, 350, 550); //content.SetLineWidth(1f); //content.stroke(); } } catch (Exception ex) { throw ex; } finally { if (pdfStamper != null) pdfStamper.Close(); if (pdfReader != null) pdfReader.Close(); } } }
以上就是C#中pdf生成图片文字水印类的实现实例的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: C#中pdf生成图片文字水印类的实现实例
本文地址: https://pptw.com/jishu/592950.html