合并 PDF 文件并添加頁碼
Spire.PDF for .NET 是一款專門對 Word 文檔進行操作的 .NET 類庫。致力于在于幫助開發人員輕松快捷高效地創建、編輯、轉換和打印 Microsoft Word 文檔,而無需安裝 Microsoft Word。
行號用于在每行文本旁邊顯示 Word 自動計算的行數。當我們需要參考合同或法律文件等文檔中的特定行時,它非常有用。word中的行號功能允許我們設置起始值、編號間隔、與文本的距離以及行號的編號方式。使用 Spire.Doc,我們可以實現上述所有功能。本文將介紹如何將 HTML 轉換為 PDF。
歡迎加入spire技術交流群:767755948
在搜索了大量有關 PDF 合并的信息之后,我們不難發現,無論是在線合并 PDF 文件還是使用 C#/VB.NET 來實現這項任務,您始終無法擺脫對一些重要問題的擔憂,例如 PDF 文件的安全性、所花費的時間以及合并后的文件是否支持打印頁碼等等。不過,只要你來到這里,這些煩惱就不會出現了。本節將專門為您介紹一種安全的解決方案,通過 .NET PDF 組件 Spire.PDF for .NET,用 C#、VB.NET 將 PDF 文件合并為一個文件。
Spire.PDF for .NET是用C#語言從零開始構建的,它能讓程序員和開發人員在.NET應用程序中創建、讀取、寫入和處理PDF文檔,而無需使用Adobe Acrobat或任何外部庫。使用 Spire.PDF for .NET,您不僅可以快速合并 PDF 文件,還可以打印帶有頁碼的 PDF 頁面。現在請預覽下面的有效截圖:

在執行以下步驟之前,請下載 Spire.PDF for .NET 并將其安裝到系統上。
步驟1:你可以使用字符串數組來保存將合并為一個PDF的三個PDF文件的名稱,并演示Spire.Pdf.PdfDocument數組。然后,加載三個 PDF 文件并選擇第一個 PdfDocument,以便將第二個和第三個 PDF 文件合并到其中。為了將第二個PDF文件中的所有頁面導入到第一個PDF文件中,你需要調用方法 public void AppendPage(PdfDocument doc)。同樣通過調用另一個方法public PdfPageBase InsertPage(PdfDocument doc, int pageIndex),第三個PDF文件的每一頁都可以導入到第一個PDF文件中。
[C#]
private void button1_Click(object sender, EventArgs e) { //pdf document list String[] files = new String[] { @"..\PDFmerge0.pdf", @"..\ PDFmerge1.pdf", @"..\ PDFmerge2.pdf" }; //open pdf documents PdfDocument[] docs = new PdfDocument[files.Length]; for (int i = 0; i < files.Length; i++) { docs[i] = new PdfDocument(files[i]); } //append document docs[0].AppendPage(docs[1]); //import PDF pages for (int i = 0; i < docs[2].Pages.Count; i = i + 2) { docs[0].InsertPage(docs[2], i); }[VB.NET]
Private Sub button1_Click(sender As Object, e As EventArgs) 'pdf document list Dim files As [String]() = New [String]() {"..\PDFmerge0.pdf", "..\ PDFmerge1.pdf", "..\ PDFmerge2.pdf"} 'open pdf documents Dim docs As PdfDocument() = New PdfDocument(files.Length - 1) {} For i As Integer = 0 To files.Length - 1 docs(i) = New PdfDocument(files(i)) Next 'append document docs(0).AppendPage(docs(1)) 'import PDF pages Dim i As Integer = 0 While i < docs(2).Pages.Count docs(0).InsertPage(docs(2), i) i = i + 2 End While第二步:在第一個 PDF 文件中繪制頁碼。在這一步中,你可以通過調用 Spire.Pdf.Graphics.PdfMargins 類來設置 PDF 頁碼頁邊距。PdfMargins。然后,調用自定義方法 DrawPageNumber(PdfPageCollection pages, PdfMargins margin, int startNumber, int pageCount) 在第一個 PDF 文件的每一頁底部添加頁碼。請看下面的詳細代碼:
[C#]
//set PDF margin PdfUnitConvertor unitCvtr = new PdfUnitConvertor(); PdfMargins margin = new PdfMargins(); margin.Top = unitCvtr.ConvertUnits(2.54f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Bottom = margin.Top; margin.Left = unitCvtr.ConvertUnits(3.17f, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point); margin.Right = margin.Left; this.DrawPageNumber(docs[0].Pages, margin, 1, docs[0].Pages.Count); private void DrawPageNumber(PdfPageCollection pages, PdfMargins margin, int startNumber, int pageCount) { foreach (PdfPageBase page in pages) { page.Canvas.SetTransparency(0.5f); PdfBrush brush = PdfBrushes.Black; PdfPen pen = new PdfPen(brush, 0.75f); PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 9f, System.Drawing.FontStyle.Italic), true); PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Right); format.MeasureTrailingSpaces = true; float space = font.Height * 0.75f; float x = margin.Left; float width = page.Canvas.ClientSize.Width - margin.Left - margin.Right; float y = page.Canvas.ClientSize.Height - margin.Bottom + space; page.Canvas.DrawLine(pen, x, y, x + width, y); y = y + 1; String numberLabel = String.Format("{0} of {1}", startNumber++, pageCount); page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format); page.Canvas.SetTransparency(1); } }[VB.NET]
'set PDF margin Dim unitCvtr As New PdfUnitConvertor() Dim margin As New PdfMargins() margin.Top = unitCvtr.ConvertUnits(2.54F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point) margin.Bottom = margin.Top margin.Left = unitCvtr.ConvertUnits(3.17F, PdfGraphicsUnit.Centimeter, PdfGraphicsUnit.Point) margin.Right = margin.Left Me.DrawPageNumber(docs(0).Pages, margin, 1, docs(0).Pages.Count) Private Sub DrawPageNumber(pages As PdfPageCollection, margin As PdfMargins, startNumber As Integer, pageCount As Integer) For Each page As PdfPageBase In pages page.Canvas.SetTransparency(0.5F) Dim brush As PdfBrush = PdfBrushes.Black Dim pen As New PdfPen(brush, 0.75F) Dim font As New PdfTrueTypeFont(New Font("Arial", 9F, System.Drawing.FontStyle.Italic), True) Dim format As New PdfStringFormat(PdfTextAlignment.Right) format.MeasureTrailingSpaces = True Dim space As Single = font.Height * 0.75F Dim x As Single = margin.Left Dim width As Single = page.Canvas.ClientSize.Width - margin.Left - margin.Right Dim y As Single = page.Canvas.ClientSize.Height - margin.Bottom + space page.Canvas.DrawLine(pen, x, y, x + width, y) y = y + 1 Dim numberLabel As [String] = [String].Format("{0} of {1}", System.Math.Max(System.Threading.Interlocked.Increment(startNumber),startNumber - 1), pageCount) page.Canvas.DrawString(numberLabel, font, brush, x + width, y, format) page.Canvas.SetTransparency(1) Next End SubPDF 合并代碼乍一看可能很長,實際上,如果你不需要在合并后的 PDF 中添加頁碼,則應避免使用第二步。然而,在很多情況下,頁碼為用戶閱讀 PDF 和打印 PDF 帶來了極大的便利。Spire.PDF for .NET既能滿足您合并PDF文件的要求,又能在合并后的PDF文件中添加頁碼。