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上下載使用它的免費版本。
感謝您的閱讀!
