• 如何给现有的PDF文件添加页码


    如何给现有的PDF文件添加页码

    之前我写了如何打印PDF文件,有人qq问我怎样在打印时给PDF文件添加页码,的确,给PDF文件添加页码,可以帮助我们区分纸质档的PDF文件页面的先后顺序,方便我们对它的阅读与管理。今天我就分享一下如何给PDF文件添加页码的方法,该方法照例使用的是之前使用的组件并且不需要安装Adobe软件。

    代码使用:

    第一步:定义一个DrawPageNumber(PdfPageCollection collection, PdfMargins margin)方法,它含有两个参数PdfPageCollection(页面)和PdfMargins(页边距),该方法的作用是在PDF页面底部的中间位置添加页码。

    private static void DrawPageNumber(PdfPageCollection collection, PdfMargins margin)
    {
        foreach (PdfPageBase page in collection)
        {
            PdfBrush brush = PdfBrushes.Black;
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Bold), true);
            PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);             
            int x = Convert.ToInt32(page.Canvas.ClientSize.Width / 2);
            int y = Convert.ToInt32(page.Canvas.ClientSize.Height-margin.Bottom);
            Rectangle bounds = new Rectangle(x, y, 50, 20);       
            PdfPageNumberField field = new PdfPageNumberField();
            field.Font = font;
            field.Brush = brush;
            field.StringFormat = format;
            field.Bounds = bounds;
            field.Draw(page.Canvas);
        }    
    }

    第二步:加载PDF文件。

    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile(@"各种点心的做法副本.pdf ");

    第三步:设置PDF页边距。

    PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
    PdfMargins margin = new PdfMargins();
    margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
    margin.Bottom = margin.Top;
    margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
    margin.Right = margin.Left;

    第四步:调用DrawPageNumber()方法,将页码添加到对应的PDF页面。

    DrawPageNumber(doc.Pages, margin);

    第五步:保存文件。

    doc.SaveToFile("添加页码.pdf", FileFormat.PDF);

    效果图:

    添加页码之前:

                         

    添加页码之后:

    完整代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Widget;
    using System.Drawing;
    using Spire.Pdf.AutomaticFields;
    
    namespace Add_Page_Numbers_to_Existing_PDF_Document
    {
        class Program
        {
            static void Main(string[] args)
            {
                PdfDocument doc = new PdfDocument();
                doc.LoadFromFile(@"各种点心的做法副本.pdf");
    
                PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
                PdfMargins margin = new PdfMargins();
                margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
                margin.Bottom = margin.Top;
                margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point);
                margin.Right = margin.Left;
                DrawPageNumber(doc.Pages, margin);
                doc.SaveToFile("添加页码.pdf", FileFormat.PDF);
            }
            private static void DrawPageNumber(PdfPageCollection collection, PdfMargins margin)
            {
                foreach (PdfPageBase page in collection)
                {
                    PdfBrush brush = PdfBrushes.Black;
                    PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 10f, FontStyle.Bold), true);
                    PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Left);             
                    int x = Convert.ToInt32(page.Canvas.ClientSize.Width / 2);
                    int y = Convert.ToInt32(page.Canvas.ClientSize.Height-margin.Bottom);
                    Rectangle bounds = new Rectangle(x, y, 50, 20);       
                    PdfPageNumberField field = new PdfPageNumberField();
                    field.Font = font;
                    field.Brush = brush;
                    field.StringFormat = format;
                    field.Bounds = bounds;
                    field.Draw(page.Canvas);
                }      
            }
        }
    }
  • 相关阅读:
    nyoj----522 Interval (简单树状数组)
    HDUOJ-----2838Cow Sorting(组合树状数组)
    HDUOJ---2642Stars(二维树状数组)
    HDUOJ -----Color the ball
    ACM遇到的问题与解决方案
    ELK架构下利用Kafka Group实现Logstash的高可用
    Linux给力的Shell命令
    i18n 语言码和对应的语言库
    jar启动脚本shell
    持续集成和部署工具GOCD
  • 原文地址:https://www.cnblogs.com/Yesi/p/5784606.html
Copyright © 2020-2023  润新知