在现代软件开发中,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修改用户借鉴参…