博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spire pdf 操作pdf,页眉 页脚 水印 二维码
阅读量:5049 次
发布时间:2019-06-12

本文共 5087 字,大约阅读时间需要 16 分钟。

1.创建页眉页脚

SizeF pageSize = pdf.Pages[0].Size == null ? PdfPageSize.A4 : pdf.Pages[0].Size;            //画笔            PdfPen pen = new PdfPen(pdf.StyleConfig.PenColor, pdf.StyleConfig.PenWidth);            //文字样式和位置 字体和对齐方式            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(pdf.StyleConfig.HeaderFont, pdf.StyleConfig.HeaderEmSize));            for (int i = 0; i < pdf.Pages.Count; i++)            {                //偏移变量                float x = pdf.PdfMargins.Left;                float y = 0;                //图片size                float width = 0;                float height = 0;                //绘制图片                if (!string.IsNullOrEmpty(imageUrl))                {                    PdfImage headerImage = PdfImage.FromFile(imageUrl);                    width = headerImage.Width / 4;                    height = headerImage.Height / 4;                    y = pdf.PdfMargins.Top;                    pdf.Pages[i].Canvas.DrawImage(headerImage, x, y, width, height);                }                //绘制线段                float x1 = pdf.PdfMargins.Left + width + 30;                float x2 = pageSize.Width - pdf.PdfMargins.Right;                float y1 = pdf.PdfMargins.Top + height;                pdf.Pages[i].Canvas.DrawLine(pen, x1, y1, x2, y1);                if (!string.IsNullOrEmpty(text))                {                    // 绘入文字                    SizeF size = font.MeasureString(text);                    x = pageSize.Width - pdf.PdfMargins.Right - size.Width;                    y = height - size.Height + (pdf.PdfMargins.Top / 3 * 2);                    pdf.Pages[i].Canvas.DrawString(text, font, PdfBrushes.Black, x, y);                }            }        }

  2.创建页脚

if (!string.IsNullOrEmpty(footerText))            {                //获取页面大小                SizeF pageSize = pdf.Pages[0].Size == null ? PdfPageSize.A4 : pdf.Pages[0].Size;                //偏移量                float x = 0;                float y = 0;                //画笔                PdfPen pen = new PdfPen(pdf.StyleConfig.PenColor, pdf.StyleConfig.PenWidth);                //文字样式和位置                PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(pdf.StyleConfig.FooterFont, pdf.StyleConfig.FooterEmSize), true);                for (int i = 0; i < pdf.Pages.Count; i++)                {                    //绘制文字                    SizeF size = font.MeasureString(footerText);                    x = (pageSize.Width - size.Width) / 2;                    y = pageSize.Height - pdf.PdfMargins.Bottom - size.Height - 2;                    pdf.Pages[i].Canvas.DrawString(footerText, font, PdfBrushes.Black, x, y);                }            }

  3.创建水印

if (!string.IsNullOrEmpty(text))            {                //创建True Type字体                PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(Pdf.StyleConfig.WaterMarkFont, Pdf.StyleConfig.WaterMarkEmSize), true);                //测量文字所占的位置大小                SizeF size = font.MeasureString(text);                //计算偏移量                float x = (float)(size.Width * System.Math.Sqrt(2) / 4);                float y = (float)(size.Height * System.Math.Sqrt(2) / 4);                //遍历文档页                foreach (PdfPageBase page in Pdf.Pages)                {                    //设置透明度                    page.Canvas.SetTransparency(Pdf.StyleConfig.Transparency);                    //将坐标系向右,向下平移                    page.Canvas.TranslateTransform(page.Canvas.Size.Width / 2 - x - y, page.Canvas.Size.Height / 2 + x - y);                    //将坐标系逆时针旋转45度                    page.Canvas.RotateTransform(Pdf.StyleConfig.Angle);                    //绘制文本                    page.Canvas.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);                }            }

  4.二维码

if (!string.IsNullOrEmpty(data))            {                SizeF pageSize = pdf.Pages[0].Size == null ? PdfPageSize.A4 : pdf.Pages[0].Size;                //创建BarcodeSettings对象                BarcodeSettings.ApplyKey("keyNumber");                BarcodeSettings settings = new BarcodeSettings();                //设置条码类型为二维码                settings.Type = BarCodeType.QRCode;                //设置二维码数据                settings.Data = data;                settings.ShowText = false;                //设置数据类型                settings.QRCodeDataMode = QRCodeDataMode.Auto;                //设置宽度                settings.X = 0.7f;                BarCodeGenerator generator = new BarCodeGenerator(settings);                Image image = generator.GenerateImage();                //绘制二维码图形到PDF                PdfImage pdfImage = PdfImage.FromImage(image);                float x = pageSize.Width - pdf.PdfMargins.Right - pdfImage.PhysicalDimension.Width;                float y = 5;                if (!string.IsNullOrEmpty(imageUrl))                {                    PdfImage headerImage = PdfImage.FromFile(imageUrl);                    y += headerImage.Height / 4;                }                y += pdf.PdfMargins.Top;                pdf.Pages[0].Canvas.DrawImage(pdfImage, x, y);            }

  

转载于:https://www.cnblogs.com/xxh-2014/p/11208951.html

你可能感兴趣的文章
JVM参数配置及内存调优
查看>>
网页自适应
查看>>
【转】iOS - SQLite 数据库存储
查看>>
积木分发
查看>>
ASP.NET Core 1.1通过EF Core访问Mysql及linux调试
查看>>
常用第三方开源上传组件总结
查看>>
洗牌算法Fisher-Yates以及C语言随机数的产生
查看>>
lintcode-medium-Find the Missing Number
查看>>
网址url传递参数包含中文时乱码的问题的解决
查看>>
java——多线程并发库
查看>>
[js开源组件开发]js轮播图片支持手机滑动切换
查看>>
JSONObject的toBean 和 fromObject
查看>>
DoTween小结
查看>>
CURL 支持 GET、PUT、POST、DELETE请求
查看>>
.net(c#)中的new关键字
查看>>
【文智背后的奥秘】系列篇——文本聚类系统
查看>>
实时信号
查看>>
struct和typedef struct的区别
查看>>
内存测试——Android Studio中对应进程的Heap
查看>>
『校内OJ』NOIP2019模拟赛(二)
查看>>