使用免费组件给PDF文档添加文本和图片页眉

C#/.NET 使用免费组件给PDF文档添加文本和图片页眉

如今PDF文档与Office文档一样成为了一种通用文档,在日常工作中我们经常会碰到需要给PDF文件添加页眉和页脚/页码等情况,如果你正好是喜欢编程的朋友,不妨看看本篇文章。本文主要介绍如何在C#/.NET应用程序中使用免费组件Free Spire.PDF给现有的PDF文档添加文本和图片页眉,当然它除了这个功能外也支持添加页脚及其他丰富的功能,免费版可以供商业或个人免费使用,感兴趣的朋友可以从这里直接下载使用该组件(无需注册)。

以下是详细步骤。

首先在visual studio中创建一个新的C#项目,添加对Spire.Pdf.dll的引用。

接下来定义一个静态方法SetDocumentTemplate(PdfDocumentdoc, SizeF pageSize, PdfMargins margin)来创建一个PDF文档模板,在该方法内调用DrawString(strings, PdfFontBase font, PdfBrush brush, float x, float y, PdfStringFormat format) 方法和DrawImage(PdfImageimage, float x, float y, float width, float height)方法向模板插入自定义的文本和图片页眉,具体位置及图片的大小可以自定义。

static voidSetDocumentTemplate(PdfDocument doc, SizeF pageSize, PdfMarginsmargin)
{
    PdfPageTemplateElement topSpace = new PdfPageTemplateElement(pageSize.Width,margin.Top);
    topSpace.Foreground= true;
    doc.Template.Top =topSpace;
 
    //添加文本页眉
    PdfTrueTypeFont font = newPdfTrueTypeFont(newFont("ArialUnicode MS", 11f), true);
    PdfStringFormat format = newPdfStringFormat(PdfTextAlignment.Right);
    String text = "PDF页眉";           
    float x = PdfPageSize.A4.Width;
    float y = 0;
    topSpace.Graphics.DrawString(text,font, PdfBrushes.Black, x, y, format);
 
    //添加图片页眉
    PdfImage headerImage = PdfImage.FromFile(@"E:\Program Files\1.png");
    float width = headerImage.Width;
    float height = headerImage.Height;
    topSpace.Graphics.DrawImage(headerImage,0, 0, width / 3, height / 4);
}

然后在主函数内调用该方法。

思路解析:

1.首先创建一个新的PDF文档,并把它所有的margin也就是页边距都设置为0。

PdfDocument doc = new PdfDocument();
doc.PageSettings.Margins.All = 0;

2.然后载入现有的需要添加页眉的PDF文档。

PdfDocument original = new PdfDocument();
original.LoadFromFile("示例.pdf");

3.调用以上方法,将以上模板应用到新建的PDF文档上。

SetDocumentTemplate(doc, PdfPageSize.A4,original.PageSettings.Margins);

4.遍历原始文档的每一页,向这个新文档添加与原始文档一致数量及大小的页面,然后将原始文档的每一页的内容画到新文档对应的每一页上。

PdfPageBase page = null;
foreach (PdfPageBaseorigianlPage in original.Pages)
{
    page = doc.Pages.Add(newSizeF(origianlPage.Size.Width,origianlPage.Size.Height));
    origianlPage.CreateTemplate().Draw(page, 0,-(original.PageSettings.Margins.Top));
}

5.最后保存文档。

doc.SaveToFile("页眉.pdf");

这是原始PDF文档:


运行结果:



全部代码如下:

using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
 
namespace 给PDF文档添加页眉
{
    class Program
    {
        static void Main(string[] args)
        {
            PdfDocument doc = newPdfDocument();
            doc.PageSettings.Margins.All = 0;         
 
            PdfDocument original = newPdfDocument();
            original.LoadFromFile("示例.pdf");
 
            SetDocumentTemplate(doc, PdfPageSize.A4,original.PageSettings.Margins);
 
            PdfPageBasepage = null;
            foreach (PdfPageBaseorigianlPage in original.Pages)
            {
               page = doc.Pages.Add(new SizeF(origianlPage.Size.Width,origianlPage.Size.Height));
               origianlPage.CreateTemplate().Draw(page, 0,-(original.PageSettings.Margins.Top));
            }
           doc.SaveToFile("页眉.pdf");
           System.Diagnostics.Process.Start("页眉.pdf");
        }
 
        static voidSetDocumentTemplate(PdfDocument doc, SizeF pageSize, PdfMarginsmargin)
        {
            PdfPageTemplateElement topSpace = new PdfPageTemplateElement(pageSize.Width,margin.Top);
            topSpace.Foreground = true;
            doc.Template.Top = topSpace;
 
            PdfTrueTypeFont font = newPdfTrueTypeFont(newFont("ArialUnicode MS", 11f), true);
            PdfStringFormat format = newPdfStringFormat(PdfTextAlignment.Right);
            String text = "PDF页眉";           
            float x = PdfPageSize.A4.Width;
            float y = 0;
            topSpace.Graphics.DrawString(text, font, PdfBrushes.Black,x, y, format);
 
            PdfImage headerImage = PdfImage.FromFile(@"E:\Program Files\1.png");
            float width = headerImage.Width;
            float height = headerImage.Height;
            topSpace.Graphics.DrawImage(headerImage, 0, 0, width / 3, height / 4);
        }
    }
}


 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值