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

给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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值