• Spire pdf 操作pdf,页眉 页脚 水印 二维码


    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);
                }
    

      

    改变自己,成长自己
  • 相关阅读:
    组合模式
    备忘录模式
    适配器模式
    状态模式
    观察者模式
    建造者模式
    地图染色-四色定理
    c++传递函数当作对象传递
    位向量实现集合—王晓东数据结构
    动态规划之最大连续子序列
  • 原文地址:https://www.cnblogs.com/xxh-2014/p/11208951.html
Copyright © 2020-2023  润新知