博客 / 詳情

返回

使用 C# 為 PDF 添加 X/Y 頁碼

PDF 文檔作為信息交流和存儲的通用格式,在日常辦公和技術文檔中扮演着不可或缺的角色。然而,當處理大量 PDF 文檔時,手動為每一頁添加頁碼無疑是一項繁瑣且耗時的工作。為了提升效率和文檔的專業性,自動化地為 PDF 文檔添加頁碼變得尤為重要。

本文將引導您使用 C# 編程語言,結合強大的第三方庫 Spire.PDF for .NET,輕鬆實現在 PDF 文檔的每一頁底部添加“第 X 頁 / 共 Y 頁”格式的頁碼。Spire.PDF for .NET 以其豐富的功能、易用性和高效性,成為 .NET 開發者處理 PDF 文檔的理想選擇。通過本文的詳細教程,您將掌握如何自動化這一常見需求,從而優化您的文檔處理流程。


Spire.PDF for .NET 簡介與環境準備

Spire.PDF for .NET 是一個專業的 .NET PDF 組件,它允許開發者在 .NET 應用程序中創建、讀取、編輯、轉換和打印 PDF 文檔,而無需安裝 Adobe Acrobat。其主要特點包括:

  • 功能全面: 支持文本、圖片、表格、圖表、書籤、附件、水印、頁眉頁腳等各種 PDF 元素的操作。
  • 性能優異: 處理大型 PDF 文檔時表現出色。
  • 易於集成: 提供了清晰的 API 接口,方便開發者快速上手。
  • 獨立性強: 不依賴於 Adobe Acrobat 或其他第三方軟件。

如何安裝 Spire.PDF for .NET

在您的 .NET 項目中集成 Spire.PDF for .NET 非常簡單,只需通過 NuGet 包管理器進行安裝。

  1. 通過 NuGet 包管理器控制枱安裝:

    在 Visual Studio 中,打開“工具”->“NuGet 包管理器”->“包管理器控制枱”,然後輸入以下命令:

    Install-Package Spire.PDF
  2. 通過 NuGet 包管理器 UI 安裝:

    在 Visual Studio 中,右鍵點擊您的項目,選擇“管理 NuGet 包...”,然後在“瀏覽”選項卡中搜索“Spire.PDF”,點擊安裝即可。

安裝完成後,Spire.PDF for .NET 的引用將自動添加到您的項目中,您就可以開始使用它的功能了。


核心代碼實現:添加“第 X 頁 / 共 Y 頁”頁碼

本節將詳細介紹如何使用 C# 和 Spire.PDF for .NET 在 PDF 文檔的每一頁底部居中添加“第 X 頁 / 共 Y 頁”格式的頁碼。

實現邏輯概述

  1. 加載文檔: 使用 PdfDocument 類加載目標 PDF 文檔。
  2. 獲取總頁數: 獲取文檔的總頁數,用於構建頁碼字符串中的“共 Y 頁”。
  3. 遍歷頁面: 迭代文檔中的每一頁。
  4. 創建頁碼文本: 為當前頁構建“第 X 頁 / 共 Y 頁”格式的字符串。
  5. 設置樣式: 定義頁碼文本的字體、大小、顏色和對齊方式。
  6. 計算位置: 根據頁面尺寸和頁邊距,計算頁碼文本的繪製位置,使其在底部居中。
  7. 繪製頁碼: 將頁碼文本繪製到當前頁。
  8. 保存文檔: 將修改後的文檔保存到新的 PDF 文件中。

完整的 C# 代碼示例

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

namespace AddPageNumbersToCenter
{
    class Program
    {
        static void Main(string[] args)
        {
            // 創建一個 PdfDocument 對象
            PdfDocument doc = new PdfDocument();

            // 加載 PDF 文件
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.pdf");

            // 創建字體、畫刷和筆,設置頁碼外觀
            PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋體", 10f, FontStyle.Regular), true);
            PdfBrush brush = PdfBrushes.Black;
            PdfPen pen = new PdfPen(brush, 1.0f);

            // 創建 PdfPageNumberField 和 PdfPageCountField 對象
            PdfPageNumberField pageNumberField = new PdfPageNumberField();
            PdfPageCountField pageCountField = new PdfPageCountField();

            // 創建 PdfCompositeField 對象,組合頁碼和總頁數
            PdfCompositeField compositeField = new PdfCompositeField(font, brush, "第 {0} 頁 / 共 {1} 頁", pageNumberField, pageCountField);

            // 遍歷文檔中的每一頁
            for (int i = 0; i < doc.Pages.Count; i++)
            {
                // 獲取當前頁
                PdfPageBase page = doc.Pages[i];
                // 獲取頁面尺寸
                SizeF pageSize = page.Size;

                // 在指定位置繪製線條
                page.Canvas.DrawLine(pen, 72, pageSize.Height - 50, pageSize.Width - 72, pageSize.Height - 50);

                // 測量“第 X 頁 / 共 Y 頁”的寬度
                SizeF pageNumberSize = font.MeasureString(string.Format("第 {0} 頁 / 共 {1} 頁", i + 1, doc.Pages.Count));

                // 設置組合字段的位置,使其居中
                compositeField.Location = new PointF((pageSize.Width - pageNumberSize.Width) / 2, pageSize.Height - 45);
                // 在頁面上繪製組合字段
                compositeField.Draw(page.Canvas);
            }

            // 將結果保存為一個新的 PDF 文件
            doc.SaveToFile("AddPageNumbersToCenter.pdf");
            // 釋放資源
            doc.Dispose();
        }
    }
}

關鍵代碼行解釋:

  • doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Terms of service.pdf");:加載指定的 PDF 文件。
  • doc.Pages.Count;:獲取 PDF 文檔的頁面總數。
  • PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋體", 10f, FontStyle.Regular), true);:創建一個宋體字體,大小為 12pt。
  • PdfBrush brush = PdfBrushes.Black;:定義頁碼文本的顏色為黑色。
  • PdfCompositeField compositeField = new PdfCompositeField(font, brush, "第 {0} 頁 / 共 {1} 頁", pageNumberField, pageCountField);:創建一個組合字段,格式為“第 X 頁 / 共 Y 頁”。
  • compositeField.Location = new PointF((pageSize.Width - pageNumberSize.Width) / 2, pageSize.Height - 45);:計算頁碼繪製的位置,使其居中。
  • compositeField.Draw(page.Canvas);:將在當前頁上繪製組合字段。
  • doc.SaveToFile("AddPageNumbersToCenter.pdf");:將帶有頁碼的新 PDF 文檔保存為 AddPageNumbersToCenter.pdf

進一步的自定義與考量

Spire.PDF for .NET 提供了極高的靈活性,您可以根據具體需求對頁碼進行更細緻的自定義:

  • 調整頁碼位置。
  • 字體樣式與顏色。
  • 頁碼格式。
  • 處理不同尺寸頁面或特殊佈局。
  • 水印效果。

Spire.PDF for .NET 的強大之處在於其豐富的 API,允許開發者精細控制 PDF 文檔的每一個細節。


總結

通過本文的教程,您已經掌握瞭如何使用 C# 和 Spire.PDF for .NET 庫,自動化地為 PDF 文檔添加“第 X 頁 / 共 Y 頁”格式的頁碼。這不僅極大地簡化了原本繁瑣的手動操作,也提高了文檔的專業性和可讀性。我們鼓勵您進一步探索 Spire.PDF for .NET 的其他功能,從而為您的應用程序帶來更大的價值和效率提升。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.