博客 / 詳情

返回

使用 C# 靈活掌控 PDF 頁面結構與內容

在日常文檔處理工作中,PDF 文件的頁面管理是一個常見需求。例如,在編寫報告時,可能需要插入新頁面補充説明;在歸檔文件時,需要刪除或重新排序頁面;在拆分資料時,還需要將部分頁面提取到新的文件中。通過 C#,我們可以利用 API 對 PDF 頁面進行靈活控制,從而提升工作效率。

本文將演示如何在一個程序中實現以下操作:

  • 添加與插入頁面
  • 刪除指定頁面
  • 複製和移動頁面
  • 調整頁面順序
  • 將頁面提取到新的 PDF 文檔
  • 跨文檔複製頁面

本文示例使用 Free Spire.PDF for .NET,可通過 NuGet 安裝:

Install-Package FreeSpire.PDF

示例代碼

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

class Program
{
    static void Main()
    {
        // 1. 創建並加載 PDF 文檔
        PdfDocument doc = new PdfDocument();

        // 添加初始頁面,寫入標題
        PdfPageBase initPage = doc.Pages.Add();
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("微軟雅黑", 14f), true);
        initPage.Canvas.DrawString("原始第一頁", font, PdfBrushes.Black, 50, 50);

        // 2. 在文檔末尾添加新頁面
        PdfPageBase addedPage = doc.Pages.Add();
        addedPage.Canvas.DrawString("這是添加的頁面(末尾)", font, PdfBrushes.DarkBlue, 50, 50);

        // 3. 在開頭插入頁面
        PdfPageBase insertedPage = doc.Pages.Insert(0);
        insertedPage.Canvas.DrawString("這是插入的頁面(位於最前面)", font, PdfBrushes.Green, 50, 50);

        // 4. 刪除第二頁
        doc.Pages.RemoveAt(1);

        // 5. 複製第一頁到末尾
        PdfPageBase copySource = doc.Pages[0];
        doc.InsertPage(doc, copySource);

        // 6. 移動最後一頁到開頭
        PdfPageBase lastPage = doc.Pages[doc.Pages.Count - 1];
        PdfPageBase newPage = doc.Pages.Insert(0, lastPage.Size);
        newPage.Canvas.DrawTemplate(lastPage.CreateTemplate(), PointF.Empty);
        doc.Pages.RemoveAt(doc.Pages.Count - 1);

        // 7. 提取前兩頁到新的 PDF
        PdfDocument extractedDoc = new PdfDocument();
        extractedDoc.InsertPage(doc, 0, 0);
        extractedDoc.InsertPage(doc, 1, 1);
        extractedDoc.SaveToFile("ExtractedPages.pdf");

        // 8. 將頁面複製到其他文檔
        PdfDocument targetDoc = new PdfDocument();
        targetDoc.InsertPage(doc, 0, 0);
        PdfPageBase targetPage = targetDoc.Pages[0];
        targetPage.Canvas.DrawString("這是從源文檔複製過來的頁面",
            new PdfTrueTypeFont(new Font("微軟雅黑", 12f), true), PdfBrushes.Red, 50, 80);
        targetDoc.SaveToFile("CopiedToNewDoc.pdf");

        // 保存修改後的源文檔
        doc.SaveToFile("PageOperations.pdf");
        doc.Close();
    }
}

執行程序後會生成以下文件:

  • PageOperations.pdf:包含添加、插入、刪除、複製、移動等操作結果。
  • ExtractedPages.pdf:僅包含提取的前兩頁。
  • CopiedToNewDoc.pdf:跨文檔複製生成的新文件。

文件預覽:

PageOperations.pdf:

PageOperations.pdf

ExtractedPages.pdf:

ExtractedPages.pdf

CopiedToNewDoc.pdf:

CopiedToNewDoc.pdf


關鍵類與方法解析

1. PdfDocument

表示一個 PDF 文檔對象,是頁面操作的入口。
常用方法包括:

  • Pages.Add():在末尾添加新頁面
  • Pages.Insert(int index):在指定位置插入頁面
  • Pages.RemoveAt(int index):刪除指定位置的頁面
  • InsertPage(PdfDocument srcDoc, int srcIndex, int destIndex):從源文檔插入頁面
  • SaveToFile(string filename):保存文件

2. PdfPageBase

表示文檔中的單個頁面。
常用屬性與方法:

  • Canvas:獲取繪圖表面,可在頁面上繪製內容
  • Canvas.DrawString(string text, Font font, PdfBrush brush, float x, float y):寫入文字

總結

通過本文示例,我們在一個 C# 程序中完成了 PDF 頁面 添加、插入、刪除、複製、移動、提取和跨文檔複製 的常見操作。這些方法能夠幫助開發者在實際項目中靈活管理 PDF 文檔結構與內容。

更多PDF文檔處理技巧,請前往Spire.PDF for .NET官方文檔查看。

user avatar shuyixiaobututou 頭像 u_16099188 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.