C#/VB.NET 合併PDF頁面

iceblue發表於2022-04-29

本文以C#及vb.net程式碼為例介紹如何來實現合併PDF頁面內容。本文中的合併並非將兩個文件簡單合併為一個文件,而是將多個頁面內容合併到一個頁面,目的是減少頁面上的空白區域,使頁面佈局更為緊湊、合理。下面,將分別從兩個示例來展示合併,即:

  • 從兩個PDF文件頁面實現頁面合併
  • 在同一個PDF文件實現頁面合併

 

【程式環境】

方法1

在程式中引入Spire.Pdf.dll檔案;將 Free Spire.PDF for .NET下載到本地,解壓,安裝。安裝完成後,找到安裝路徑下BIN資料夾中的Spire.Pdf.dll。然後在Visual Studio中開啟“解決方案資源管理器”,滑鼠右鍵點選“引用”,“新增引用”,將本地路徑BIN資料夾下的dll檔案新增引用至程式。

方法2

通過 NuGet 安裝。可通過以下2種方法安裝:

1. 可以在Visual Studio中開啟“解決方案資源管理器”,滑鼠右鍵點選“引用”,“管理NuGet包”,然後搜尋“ Free Spire.PDF ”,點選“安裝”。等待程式安裝完成。

2. 將以下內容複製到PM控制檯安裝:

Install-Package FreeSpire.PDF -Version 8.2.0


 

【程式碼示例】

1.從兩個PDF文件頁面實現頁面合併

(合併前)需要將檔案1的內容合併到檔案2的第二頁空白處:

C#

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

namespace MergePages
{
    class Program
    {
        static void Main(string[] args)
        {
            //載入兩個PDF文件
            PdfDocument pdf1 = new PdfDocument();
            pdf1.LoadFromFile("test1.pdf");
            PdfDocument pdf2 = new PdfDocument();
            pdf2.LoadFromFile("test2.pdf");

            //建立模板
            PdfTemplate template = pdf1.Pages[0].CreateTemplate();

            //獲取文件2中的第2頁
            PdfPageBase page2 = pdf2.Pages[1];
            //設定透明度
            page2.Canvas.SetTransparency(1f, 1f, PdfBlendMode.Overlay);
            //在頁面指定位置繪製模板
            page2.Canvas.DrawTemplate(template, new PointF(0, 300));  

            //儲存文件
            pdf2.SaveToFile("mergepages.pdf");
        }
    }
}

合併後的效果:

VB.NET

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

Namespace MergePages
    Class Program
        Private Shared Sub Main(args As String())
            '載入兩個PDF文件
            Dim pdf1 As New PdfDocument()
            pdf1.LoadFromFile("test1.pdf")
            Dim pdf2 As New PdfDocument()
            pdf2.LoadFromFile("test2.pdf")

            '建立模板
            Dim template As PdfTemplate = pdf1.Pages(0).CreateTemplate()

            '獲取文件2中的第2頁
            Dim page2 As PdfPageBase = pdf2.Pages(1)
            '設定透明度
            page2.Canvas.SetTransparency(1F, 1F, PdfBlendMode.Overlay)
            '在頁面指定位置繪製模板
            page2.Canvas.DrawTemplate(template, New PointF(0, 300))

            '儲存文件
            pdf2.SaveToFile("mergepages.pdf")
        End Sub
    End Class
End Namespace

2.在同一個PDF文件實現頁面合併

(合併前)將同一個文件中,第2頁中的內容繪製到第1頁空白處,並刪掉多餘的空白頁:

C#

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

namespace MergePage2
{
    class Program
    {
        static void Main(string[] args)
        {
            //載入PDF文件
            PdfDocument pdf = new PdfDocument("sample.pdf");

            //建立模板
            PdfTemplate template = pdf.Pages[1].CreateTemplate();

            //獲取第一個頁面
            PdfPageBase page1 = pdf.Pages[0];

            //獲取第二個頁面
            PdfPageBase page2 = pdf.Pages[1];

            //設定透明度和重疊樣式 
            page2.Canvas.SetTransparency(1f, 1f, PdfBlendMode.Overlay);

            //將第二頁中的內容繪製到第一頁指定位置
            page1.Canvas.DrawTemplate(template, new PointF(0, 240));

            //刪除第二頁`
            pdf.Pages.RemoveAt(1);

            //儲存文件
            pdf.SaveToFile("MergePage2.pdf",FileFormat.PDF);
        }
    }
}

合併後的效果:

VB.NET

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

Namespace MergePage2
    Class Program
        Private Shared Sub Main(args As String())
            '載入PDF文件
            Dim pdf As New PdfDocument("sample.pdf")

            '建立模板
            Dim template As PdfTemplate = pdf.Pages(1).CreateTemplate()

            '獲取第一個頁面
            Dim page1 As PdfPageBase = pdf.Pages(0)

            '獲取第二個頁面
            Dim page2 As PdfPageBase = pdf.Pages(1)

            '設定透明度和重疊樣式 
            page2.Canvas.SetTransparency(1F, 1F, PdfBlendMode.Overlay)

            '將第二頁中的內容繪製到第一頁指定位置
            page1.Canvas.DrawTemplate(template, New PointF(0, 240))

            '刪除第二頁`
            pdf.Pages.RemoveAt(1)

            '儲存文件
            pdf.SaveToFile("MergePage2.pdf", FileFormat.PDF)
        End Sub
    End Class
End Namespace

 

另推薦閱讀:

 

—END—

 

相關文章