C#/VB.NET 合併PDF頁面

来源:https://www.cnblogs.com/Yesi/archive/2022/04/29/16206636.html
-Advertisement-
Play Games

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


本文以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—

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近正在學習回溯法,遇到的第一個問題就是n皇後問題,問題如下: 要求在一個n×n的棋盤上放置n個皇後,使得任意兩個皇後不在同一行或同一列或同一斜線上。 直接上代碼: #include<iostream> #include<math.h> using namespace std; void NQuee ...
  • POM :文件名稱是pom.xml ,  pom翻譯過來叫做項目對象模型,maven把一個項目當做一個模型使用 ...
  • 背景介紹 R和Python作為兩個開源、且容易上手的數據分析和繪圖工具,在科研中應用的比較廣泛。 在接下來的日子,我們圍繞Python進行繪圖和數據分析話題,寫一系列推文,事實上是我自己的一些學習筆記分享出來,為了我 方便查閱,也方便大家翻閱。 軟體介紹 [軟體名稱]:Anaconda | Spyd ...
  • 我們知道,頻繁操作資料庫會降低伺服器的系統性能,因此通常需要將頻繁訪問、更新的數據存入到緩存。Halo 項目也引入了緩存機制,且設置了多種實現方式,如自定義緩存、Redis、LevelDB 等,下麵我們分析一下緩存機制的實現過程。 ...
  • 適用 2022.1 【更新時間 2022-4-29】 引言 由於IDEA在2021.2.2以後我們不能再使用重置大法白嫖了。 為了打擊破解,Jetbrains煞費苦心,這次採用了JB賬號登陸,通過授權認證獲取免費試用資格(所以之前的無限重置的插件在今後的新版本中,將無法使用),以下整理了一個免JB註 ...
  • 前幾篇都是手動錄入或隨機函數產生的數據。實際有許多類型的文件,以及許多方法,用它們從文件中提取數據來圖形化。 比如之前python基礎(12)介紹打開文件的方式,可直接讀取文件中的數據,擴大了我們的數據來源。下麵詳細介紹從文件中載入數據。 一、使用內置的 csv 模塊載入CSV文件 CSV文件是一種 ...
  • 我前面幾篇隨筆介紹了關於幾篇關於SqlSugar的基礎封裝,已經可以直接應用在Winform項目開發上,並且基礎介面也通過了單元測試,同時測試通過了一些Winform功能頁面;本篇隨筆繼續深化應用開發,著手在在.net6框架的Web API上開發應用,也就是基於.net core的Web API應用... ...
  • 前言 一個項目上線了兩個月,除了一些反饋的優化和小Bug之外,項目一切順利;前期是屬於推廣階段,可能使用人員沒那麼多,當然對於項目部署肯定提前想到併發量了,所以早就把集群安排上,而且還在測試環境搞了一下壓測,絕對是沒得問題的;但是,就在兩個月後的一天,系統突然跑的比烏龜還慢,投訴開始就陸續反饋過來了 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...