加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C# 给现有PDF文档添加页眉、页脚

发布时间:2020-12-16 01:07:59 所属栏目:百科 来源:网络整理
导读:概述 页眉页脚是一篇完整、精致的文档的重要组成部分。在页眉页脚处,可以呈现的内容很多,如公司名称、页码、工作表名、日期、图片,如LOGO、标记等。在之前的文章中介绍了如何通过新建一页空白PDF页来添加页眉到该页面,包括文字页面、图片页眉。但是在实

概述

页眉页脚是一篇完整、精致的文档的重要组成部分。在页眉页脚处,可以呈现的内容很多,如公司名称、页码、工作表名、日期、图片,如LOGO、标记等。在之前的文章中介绍了如何通过新建一页空白PDF页来添加页眉到该页面,包括文字页面、图片页眉。但是在实际应用中,该方法会有一定局限性,通过测试,下面将介绍C#给现有的PDF文档添加页眉页脚的方法。该方法中,丰富了我们对于添加页眉页脚的内容形式,包括添加图片、文字、超链接、页码等。

使用工具

  • Free Spire.PDF for .NET 4.3(社区版)

注:下载该类库后,注意在程序中添加引用Spire.Pdf.dll(dll文件可在安装路径下的Bin文件夹中获取)

?

C# 代码步骤(供参考)

步骤 1 :添加using指令

using Spire.Pdf;
 Spire.Pdf.AutomaticFields;
 Spire.Pdf.Graphics;
 System;
using System.Drawing;

步骤 2 :加载测试文档

//实例化PdfDocument类,加载测试文档
PdfDocument existingPdf = new PdfDocument();
existingPdf.LoadFromFile("Test.pdf");

步骤 3 :添加页眉页脚

调用DrawHeader()方法在现有文档添加页眉
DrawHeader(existingPdf);

调用DrawFooter()方法在现有文档添加页脚
DrawFooter(existingPdf);

注:这里需要自定义方法来分别添加页眉、页脚到PDF文档。

自定义方法添加页眉:

在页面上方空白部位绘制页眉
static void DrawHeader(PdfDocument doc)
{
    获取页面大小
    SizeF pageSize = doc.Pages[0].Size;

    声明x,y两个float型变量
    float x = 90;
    float y = 20;

    for (int i = 0; i < doc.Pages.Count; i++)
    {
        在每一页的指定位置绘制图片
        PdfImage headerImage = PdfImage.FromFile(logo.png");
        float width = headerImage.Width / 7;
        float height = headerImage.Height / ;
        doc.Pages[i].Canvas.DrawImage(headerImage,x,y,width,height);

        在每一页的指定位置绘制横线
        PdfPen pen = new PdfPen(PdfBrushes.Gray,0.5f);
        doc.Pages[i].Canvas.DrawLine(pen,y + height + 2,pageSize.Width - x,y + height + 2);
    }
}

自定义方法添加页脚:

在页面下方空白部位绘制页脚
 DrawFooter(PdfDocument doc)
{
    float y = pageSize.Height - 72 x,y);

        在每一页的指定位置绘制文字
        y = y + 5;
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font(黑体",10f,FontStyle.Bold),true);
        PdfStringFormat format =  PdfStringFormat(PdfTextAlignment.Left);
        String footerText =  Websiten https://g20.org/;
        doc.Pages[i].Canvas.DrawString(footerText,font,PdfBrushes.Black,format);  
       
        在每一页的指定位置当前页码和总页码
        PdfPageNumberField number =  PdfPageNumberField();
        PdfPageCountField count =  PdfPageCountField();
        PdfCompositeField compositeField = new PdfCompositeField(font,1)">{0}/{1},number,count);
        compositeField.StringFormat =  PdfStringFormat(PdfTextAlignment.Right,PdfVerticalAlignment.Top);
        SizeF size = font.MeasureString(compositeField.Text);
        compositeField.Bounds = new RectangleF(pageSize.Width - x - size.Width,size.Width,size.Height);
        compositeField.Draw(doc.Pages[i].Canvas);
    }
}

步骤 4 :保存文档

existingPdf.SaveToFile(output.pdf);
System.Diagnostics.Process.Start(");

代码完成后,调试运行程序,生成文档。打开文档后,效果如下:

?全部代码:

 System.Drawing;

namespace PdfHeader
{
    class Program
    {
        void Main(string[] args)
        {
            加载一个测试文档 
            PdfDocument existingPdf =  PdfDocument();
            existingPdf.LoadFromFile();

                        DrawHeader(existingPdf);

            调用DrawFooter()方法在现有文档添加页脚
            DrawFooter(existingPdf);

            保存并打开文档
            existingPdf.SaveToFile();
            System.Diagnostics.Process.Start();

        }
        在页面上方空白部位绘制页眉
         DrawHeader(PdfDocument doc)
        {
            获取页面大小
            SizeF pageSize = doc.Pages[].Size;

            ;
            ;

            )
            {
                在每一页的指定位置绘制图片
                PdfImage headerImage = PdfImage.FromFile();
                ;
                ;
                doc.Pages[i].Canvas.DrawImage(headerImage,height);

                在每一页的指定位置绘制横线
                PdfPen pen = );
                doc.Pages[i].Canvas.DrawLine(pen,1)">);
            }
        }

        在页面下方空白部位绘制页脚
         DrawFooter(PdfDocument doc)
        {
            在每一页的指定位置绘制文字
                y = y + ;
                PdfTrueTypeFont font = );
                PdfStringFormat format =  PdfStringFormat(PdfTextAlignment.Left);
                String footerText = ;
                doc.Pages[i].Canvas.DrawString(footerText,format);  
               
                在每一页的指定位置当前页码和总页码
                PdfPageNumberField number =  PdfPageNumberField();
                PdfPageCountField count =  PdfPageCountField();
                PdfCompositeField compositeField = = font.MeasureString(compositeField.Text);
                compositeField.Bounds = View Code

总结

相较于上篇文章中的添加页眉的方法,本方法在处理现有的PDF文档中更具实用性。当然,两种方法针对不同的程序设计需要,满足不同的需求,我们在选择这两种方法时,可酌情而定。

(本文完)

如需转载,请注明出处。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读