深入探索 Pdfium.Net:在 .NET 中處理和渲染 PDF 文件

在現代軟件開發中,PDF 文件的處理變得愈加重要,尤其是在文檔管理、報表生成和在線內容展示等領域。為了高效地處理和渲染 PDF 文件,開發者通常會選擇一些強大的 PDF 處理庫。而 Pdfium.Net,作為 PDFium 庫的 .NET 封裝,提供了一個高效且易于使用的解決方案,能夠幫助開發者在 .NET 環境中輕松地處理和渲染 PDF 文件。

本文將詳細介紹如何在 .NET 中使用 Pdfium.Net 進行 PDF 文件渲染、文本提取、頁面處理等常見操作,幫助你理解如何利用該庫進行高效的 PDF 處理。


一、什么是 Pdfium.Net?

Pdfium.Net 是 Google 開源的 PDFium 引擎的 .NET 封裝。PDFium 是一個高效的 PDF 渲染引擎,廣泛應用于瀏覽器和 PDF 查看器中,特別擅長處理 PDF 渲染和顯示。通過 Pdfium.Net,開發者可以在 .NET 環境下方便地使用 PDFium 來渲染、查看和處理 PDF 文件。

主要特點

  • 高效的 PDF 渲染:支持將 PDF 文件頁面渲染為圖像,便于查看和展示。

  • 文本提取:可以從 PDF 文件中提取文本內容。

  • 簡單的 API:提供簡潔的 API,易于集成到 .NET 應用程序中。

  • 跨平臺支持:雖然是 .NET 封裝,但可以在 Windows 環境下運行,支持多種平臺。


二、如何安裝 Pdfium.Net

要在 .NET 項目中使用 Pdfium.Net,你首先需要通過 NuGet 安裝該庫。可以通過 NuGet 包管理器或者命令行進行安裝。

安裝命令

  1. NuGet 包管理器控制臺

    Install-Package Pdfium.Net
    
  2. .NET CLI

    dotnet add package Pdfium.Net
    

安裝完成后,你可以在代碼中引用 PdfiumViewer 命名空間,從而使用 Pdfium.Net 提供的功能。

using PdfiumViewer;

三、Pdfium.Net 的基本使用

Pdfium.Net 提供了多種功能,下面我們將介紹一些最常見的使用場景,例如渲染 PDF 頁面為圖像、提取文本內容等。

1. 渲染 PDF 頁面為圖像

Pdfium.Net 主要用于將 PDF 頁面渲染為圖像,這使得它非常適合用于在應用程序中顯示 PDF 文件的內容。通過將 PDF 頁面渲染為圖像,你可以將其展示在任何圖形控件中,如 Windows FormsPictureBoxWPFImage 控件。

代碼示例:渲染 PDF 頁面為圖像
using PdfiumViewer;
using System.Drawing;public void RenderPdfPageToImage(string pdfFilePath, int pageNumber, string outputImagePath)
{using (var document = new PdfDocument(pdfFilePath)){var page = document.Pages[pageNumber];  // 獲取指定頁面var bitmap = page.Render();  // 渲染頁面為圖像bitmap.Save(outputImagePath, System.Drawing.Imaging.ImageFormat.Png);  // 保存為 PNG 格式}
}

通過上述代碼,你可以渲染指定頁并將其保存為圖像文件,方便在界面中顯示。

2. 在 Windows Forms 中顯示 PDF 頁面

Windows Forms 應用程序中,你可以將渲染的 PDF 頁面圖像直接顯示在 PictureBox 控件中。

代碼示例:顯示 PDF 頁面
using PdfiumViewer;
using System.Drawing;
using System.Windows.Forms;public void DisplayPdfPageInPictureBox(string pdfFilePath, int pageNumber, PictureBox pictureBox)
{using (var document = new PdfDocument(pdfFilePath)){var page = document.Pages[pageNumber];  // 獲取指定頁面var bitmap = page.Render();  // 渲染頁面為圖像pictureBox.Image = bitmap;  // 顯示渲染的圖像}
}

這段代碼將 PDF 頁面渲染為圖像,并在 Windows Forms 應用程序中的 PictureBox 控件中顯示出來。

3. 獲取 PDF 文件的總頁數

有時你可能需要獲取 PDF 文件的總頁數,Pdfium.Net 提供了簡單的方法來獲取頁面數量。

代碼示例:獲取 PDF 頁數
using PdfiumViewer;public int GetPageCount(string pdfFilePath)
{using (var document = new PdfDocument(pdfFilePath)){return document.PageCount;  // 獲取總頁數}
}

四、處理 PDF 頁面:縮放與旋轉

Pdfium.Net 提供了對 PDF 頁面縮放和旋轉的支持,方便開發者根據需求調整頁面的顯示效果。

1. 縮放 PDF 頁面

通過 Render 方法,你可以設置渲染時的縮放因子,從而實現頁面縮放。

代碼示例:縮放 PDF 頁面
using PdfiumViewer;
using System.Drawing;public void RenderPdfPageWithZoom(string pdfFilePath, int pageNumber, float zoomFactor, string outputImagePath)
{using (var document = new PdfDocument(pdfFilePath)){var page = document.Pages[pageNumber];var bitmap = page.Render(zoomFactor);  // 設置縮放因子bitmap.Save(outputImagePath, System.Drawing.Imaging.ImageFormat.Png);  // 保存為 PNG 格式}
}

2. 旋轉 PDF 頁面

你可以對 PDF 頁面進行旋轉操作,以適應不同的顯示需求。

代碼示例:旋轉 PDF 頁面
using PdfiumViewer;
using System.Drawing;public void RotatePdfPage(string pdfFilePath, int pageNumber, float rotationAngle, string outputImagePath)
{using (var document = new PdfDocument(pdfFilePath)){var page = document.Pages[pageNumber];page.Rotate(rotationAngle);  // 旋轉頁面var bitmap = page.Render();  // 渲染旋轉后的頁面bitmap.Save(outputImagePath, System.Drawing.Imaging.ImageFormat.Png);  // 保存為圖像}
}

通過這段代碼,你可以對 PDF 頁面進行旋轉操作,并將其保存為圖像文件。


五、提取 PDF 文本內容

有時,你需要從 PDF 文件中提取文本內容進行處理或分析。Pdfium.Net 允許你輕松地從 PDF 頁面中提取文本。

代碼示例:提取 PDF 文本
using PdfiumViewer;public string ExtractTextFromPage(string pdfFilePath, int pageNumber)
{using (var document = new PdfDocument(pdfFilePath)){var page = document.Pages[pageNumber];return page.GetText();  // 提取頁面文本}
}

這段代碼將提取 PDF 頁面中的文本內容,并以字符串形式返回,便于后續處理。


六、Pdfium.Net 在 WPF 中的使用

如果你正在開發 WPF 應用程序,可以通過將渲染的圖像轉換為 BitmapImage 類型,將其顯示在 Image 控件中。

代碼示例:在 WPF 中顯示 PDF 頁面
using PdfiumViewer;
using System.Drawing;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
using System.IO;public void DisplayPdfPageInWPFImageControl(string pdfFilePath, int pageNumber, Image imageControl)
{using (var document = new PdfDocument(pdfFilePath)){var page = document.Pages[pageNumber];var bitmap = page.Render();var memoryStream = new MemoryStream();bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);memoryStream.Seek(0, SeekOrigin.Begin);var bitmapImage = new BitmapImage();bitmapImage.BeginInit();bitmapImage.StreamSource = memoryStream;bitmapImage.CacheOption = BitmapCacheOption.OnLoad;bitmapImage.EndInit();imageControl.Source = bitmapImage;  // 在 WPF Image 控件中顯示圖像}
}

這段代碼將 PDF 頁面渲染為圖像并顯示在 WPF 應用程序的 Image 控件中。


七、總結

Pdfium.Net 是一個功能強大的庫,可以幫助 .NET 開發者輕松地處理和渲染 PDF 文件。無論是簡單的頁面渲染,還是文本提取、縮放、旋轉等高級功能,Pdfium.Net 都提供了簡潔而強大的 API。對于需要在桌面應用程序中集成 PDF 查看、顯示和處理功能的開發者來說,Pdfium.Net 是一個非常

值得推薦的工具。通過這篇文章的學習,你已經掌握了 Pdfium.Net 的基本使用,并可以將其應用到實際項目中,提升開發效率和用戶體驗。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86768.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86768.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86768.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

當無人機遇到AI智能體:多領域自主空中智能和無人機智能體綜述

作者:Ranjan Sapkota, Konstantinos I. Roumeliotis, Manoj Karkee 單位:康奈爾大學生物與環境工程系,希臘伯羅奔尼撒大學信息與電信系 論文標題:UAVs Meet Agentic AI: A Multidomain Survey of Autonomous Aerial Intelligenc…

從 0 到 1 玩轉 React:打造你的趣味美食相冊

想象一下,你想制作一個超酷的 “美食相冊” 網頁,能展示各種美食圖片,還能隨時切換查看不同美食。這聽起來是不是很有趣?別擔心,React 能幫你輕松實現!作為前端開發領域最受歡迎的庫之一,React …

深入淺出:RocketMQ與Kafka的雙劍合璧,實現高可用與高吞吐

本文在創作過程中借助 AI 工具輔助資料整理與內容優化。圖片來源網絡。 文章目錄 引言一、RocketMQ與Kafka的江湖地位1.1 RocketMQ的獨門絕技1.2 Kafka的凌厲攻勢 二、雙劍合璧的策略:雙寫隊列2.1 策略概述2.2 代碼實現 三、雙劍合璧的實戰應用3.1 電商訂單處理3.2 …

Apache POI-02.入門案例-通過POI向Excel文件寫入文件內容-通過POI讀取Excel文件內容

一.入門案例 向excel文件中寫入并讀出 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; impor…

MongoDB06 - MongoDB 地理空間

MongoDB06 - MongoDB 地理空間 文章目錄 MongoDB06 - MongoDB 地理空間一:地理空間數據基礎1:地理數據表示方式1.1:GeoJSON 格式1.2:傳統坐標對 2:地理空間索引2.1:2dsphere 索引2.2:2d索引2.3&…

Bugku——WEB篇(持續更新ing)

目錄 一、滑稽 二、計算器 方法一 方法二 三、alert 四、你必須讓他停下 五、頭等艙 六、GET 七、POST 方法一 方法二 八、source 九、矛盾 十、備份是個好習慣 一、滑稽 1.啟動環境后,訪問URL,頁面出現了一堆滑稽表情 2.按f12(或fnf12)打…

Linux 網絡命名空間的奧秘:深入解析struct net與內核模塊編譯陷阱

引言:網絡隔離的基石 在Linux容器化技術(如Docker)和云計算網絡中,網絡命名空間是實現網絡隔離的核心機制。每個隔離的網絡環境都由一個關鍵的內核數據結構描述——struct net。這個結構體不僅是網絡隔離的技術基礎,也是內核開發者常遇到的編譯陷阱源頭。 一、解剖網絡命…

idea的EasyCode插件連接瀚高數據庫(APP)

文章目錄 環境癥狀問題原因解決方案 環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:5.6.5 癥狀 客戶在idea工具中使用EasyCode插件連接瀚高數據庫的企業版時,連接設置的url中提示“jdbc:highgo不存在”的錯誤 問題原因 E…

VMware設置虛擬機為固定IP

1. 修改虛擬網絡編輯器 打開虛擬機網絡“編輯” 點擊“VMnet8” 選擇“NAT”模式 修改網關:前面的不要修改,最后一位設置為“1”,然后確定 記住這里的網關,后面的配置要保持一致 設置子網IP和子網掩碼:一般就…

智核引擎融合生成式AI,重塑企業知識圖譜與研發創新范式!

目錄 系統架構設計核心實現步驟步驟1:知識圖譜構建與數據預處理步驟2:生成式AI與知識圖譜融合(RAG增強)步驟3:智能推理工作流 核心流程可視化企業級部署方案性能優化策略應用場景示例結語 本文將手把手實現企業級知識圖…

LogisticRegression(solver = ‘lbfgs‘)的ConvergenceWarning問題解決

👦👦一個帥氣的boy,你可以叫我Love And Program 🖱 ?個人主頁:Love And Program的個人主頁 💖💖如果對你有幫助的話希望三連💨💨支持一下博主 LogisticRegression的Co…

web3 docs

區塊鏈重構信任機制,去中心化,用唯一的hash編號來實現防篡改。以數字貨幣的形式交易,個人持有唯一的數字秘鑰(唯一,不可篡改) 詳見 以太坊的白皮書 和 數字貨幣 (加密貨幣實現隱私交易) 底層基礎的很多特點 1.例如p2p&#xf…

AI入門 | 計算自注意力時QK^T的計算復雜度是多少?

0. 背景 假設我們有兩個矩陣: 矩陣 A,尺寸為 (n, d_k)矩陣 B,尺寸為 (d_k, n) 我們要計算它們的乘積 C A * B。 那么這個過程所需的計算量是多少? 1. 結果矩陣的尺寸 首先,結果矩陣 C 的尺寸是由第一個矩陣的行數…

NeRF-Lidar實景重建:大疆Mavic 4 Pro低成本建模方案(2025實戰指南)

摘要 面對傳統激光雷達建模??成本高昂??(單設備超$20萬)與??操作復雜??的行業痛點,本文提出基于消費級無人機大疆Mavic 4 Pro的??NeRF-LiDAR融合重建方案??,實現厘米級精度建模成本降低至1/10。核心技術突破在于&…

x64dbg設置條件斷點

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 前言一、x64是什么?二、條件斷點1.CreateWindowExW函數設置當窗口名稱為xxx字符串時候break總結前言 提示:這里可以添加本文要記錄的大概內容: x64dbg設置條件斷點 版本 2024 mar 27 提示:以…

RNN人名分類器案例

RNN人名分類器案例 1 任務目的: 目的: 給定一個人名,來判定這個人名屬于哪個國家 典型的文本分類任務: 18分類---多分類任務 2 數據格式 注意:兩列數據,第一列是人名,第二列是國家類別,中間用制表符號&q…

鴻蒙HarmonyOS 關于圖片、視頻的選擇詳解

背景 在聊天軟件中,發送相冊中視頻和照片、用相機拍攝視頻和圖片發送是很常用的功能。在Android和iOS端,大部分應用都通過API方式定義UI來實現相冊選擇照片、視頻,相機拍攝照片、視頻,它們一般都支持以下功能: 相冊選…

iOS 網絡請求斷連重試失敗?抓包分析丟包原因的完整流程

在移動 App 的開發中,中斷網絡環境(如切換到飛行模式再回網)后,App 在重連過程中有時會出現請求未重新發送或丟包的情況。這類問題難重現、難定位,尤其在 iOS 平臺上更容易被忽視。我們最近就遇到一個用戶反饋“切換網…

使用 DHTMLX Gantt 添加迷你地圖:提升大型項目可視化與導航體驗

在應對數千個任務構成的大型項目時,DHTMLX Gantt 以其卓越的性能表現和流暢渲染能力廣受歡迎。然而,在實際使用中,終端用戶往往需要快速定位到時間線中的特定位置,這在面對龐雜任務結構時尤為困難。為此,DHTMLX 提供了…

ROM修改進階教程------用于自啟腳本來打開系統的一些常用開關等指令 備份收藏 【一】

在定制化rom中。有很多項目需要反編譯系統的相關應用來實現。但有些功能項完全可以使用指令來更改。那么結合自啟腳本就可以很方便的來實現很多功能。網絡雖然有很多類似的指令,但一些相關定制化項目的指令很少見而且不全面。此博文將全面收錄此類指令。方便rom修改用戶借鑒參…