在日常文檔處理工作中,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:
ExtractedPages.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官方文檔查看。