• 首页
  • 栏目
  • CRM
  • C#给pdf增加水印,以及Dyanmics CRM本地化部署增加水印

C#给pdf增加水印,以及Dyanmics CRM本地化部署增加水印

  • 2021-11-03
  • Admin

给PDF加水印用的插件是PdfSharp.DLL,在VS中可以直接安装。
非CRM需求者可跳过下面文字直接看代码
如果是Dynamics CRM 本地不是想要加水印的话可以参考我的思路。
我的文档是存在本地SharePoint中的。
Action从SharePoint获取文件base64,返回到前端。我在这里做了手脚,在这个过程中我通过调用接口的方式,将水印加到文件中,返回一个新的base64,所以前端拿到的文件就是加水印的。

下面是给PDF加水印的一种方式-----绘制水印为文本字符串

 //获取本地文件
                        PdfDocument pdf = PdfReader.Open(FilePath + "\\" + fileName);
                        //设定PDF文件加密
                        PdfSecuritySettings pdfSecurity = pdf.SecuritySettings;
                        pdfSecurity.OwnerPassword = "bailuya~";
                        pdfSecurity.PermitAccessibilityExtractContent = false;
                        pdfSecurity.PermitAnnotations = false;
                        pdfSecurity.PermitAssembleDocument = false;
                        pdfSecurity.PermitExtractContent = false;
                        pdfSecurity.PermitFormsFill = true;
                        pdfSecurity.PermitFullQualityPrint = false;
                        //是否可修改文档
                        pdfSecurity.PermitModifyDocument = true;
                        //是否可打印
                        pdfSecurity.PermitPrint = true;
                        //获取PDF文件页数
                        int Page = pdf.PageCount;

                        //设置水印样式 
                        XFont font = new XFont("Arial Rounded MT Bold", 25);

                        //水印
                        string waterMark = Domainname + " " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                        foreach (var Pinfo in pdf.Pages)
                        {
                            //置于图层上方,图层上方不易被图片遮挡。需求者也可以使用XGraphicsPdfPageOptions.Prepend置于图层下方
                            var gfx = XGraphics.FromPdfPage(Pinfo, XGraphicsPdfPageOptions.Append);
                            var size = gfx.MeasureString(waterMark, font);
                            //水印位置
                            gfx.TranslateTransform(Pinfo.Width / 2, Pinfo.Height / 2);
                            gfx.RotateTransform(-Math.Atan(Pinfo.Height / Pinfo.Width) * 180 / Math.PI);
                            gfx.TranslateTransform(-Pinfo.Width / 2, -Pinfo.Height / 2);

                            var format = new XStringFormat();
                            format.Alignment = XStringAlignment.Near;
                            format.LineAlignment = XLineAlignment.Near;

                            //将水印绘制为文本字符串
                            XBrush brush = new XSolidBrush(XColor.FromArgb(128, 255, 0, 0));
                            gfx.DrawString(waterMark, font, brush, new XPoint((Pinfo.Width - size.Width) / 2, (Pinfo.Height - size.Height) / 2), format);
                        }
                        //保存
                        pdf.Save(FilePath + "\\" + fileName);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

原文:https://blog.csdn.net/weixin_44225369/article/details/121121465

联系站长

QQ:769220720