C# 複制PDF頁面到另一個PDF文檔
有時候我們可能有這樣一個需求,那就是把PDF頁面從一個PDF文檔複制到另一個PDF文檔中。由于PDF文檔并不像word文檔那樣好編輯,是以複制也相對沒有那麼容易。寫這篇文章主要是分享一個簡單而且比較容易實作的方法 - 使用C#将一個PDF文檔的頁面,包括文字、圖檔和背景等複制到另一個PDF文檔的指定位置。
下面是我準備的兩個PDF檔案:

目标:将左邊的PDF文檔的第一頁複制到右邊的PDF文檔的第二頁的位置。
代碼實作:
步驟1:初始化一個PdfDocument類的對象doc1并加載第一個PDF文檔。
PdfDocument doc1 = new PdfDocument();
doc1.LoadFromFile("童話故事.pdf");
步驟2:初始化一個PdfDocument類的對象doc2并加載第二個PDF文檔。
PdfDocument doc2 = new PdfDocument();
doc2.LoadFromFile("各種點心的做法.pdf");
步驟3:擷取第一個PDF文檔的第一頁以及它的頁面大小,并基于第一頁建立一個PDF模闆。
PdfPageBase page = doc1.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();
步驟4:複制第一個PDF文檔的第一頁到第二個PDF文檔中。
調用Insert(int index, SizeF size, PdfMargins margins)方法,在第二個PDF文檔中,插入一個和第一頁大小一緻的新頁面到該文檔的指定位置(這裡是第二頁),然後将步驟3中建立的模闆應用到該頁面。
doc2.Pages.Insert(1, size, new PdfMargins(0, 0));
doc2.Pages[1].Canvas.DrawTemplate(template, new PointF(0, 0));
如果要将第一頁複制到第二個文檔的最後一頁,請用以下代碼來添加一個新頁面到第二個文檔的末尾,然後再将模闆應用到該頁面。
doc2.Pages.Add(size, new PdfMargins(0, 0));
步驟5:儲存檔案并重新打開。
doc2.SaveToFile("複制.pdf");
System.Diagnostics.Process.Start("複制.pdf");
複制後的效果:
全部代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace 複制PDF頁面到另一個PDF文檔
{
class Program
{
static void Main(string[] args)
{
PdfDocument doc1 = new PdfDocument();
doc1.LoadFromFile("童話故事.pdf");
PdfDocument doc2 = new PdfDocument();
doc2.LoadFromFile("各種點心的做法.pdf");
PdfPageBase page = doc1.Pages[0];
SizeF size = page.Size;
PdfTemplate template = page.CreateTemplate();
doc2.Pages.Insert(1, size, new PdfMargins(0, 0));
doc2.Pages[1].Canvas.DrawTemplate(template, new PointF(0, 0));
doc2.SaveToFile("複制.pdf");
System.Diagnostics.Process.Start("複制.pdf");
}
}
}
Note:在這裡我借助的是第三方軟體Spire.PDF,如果你的PDF文檔不超過10頁,可以去CodePlex上下載下傳使用它的免費版本。
感謝您的閱讀!