PDF 文档,作为日常工作中不可或缺的文档格式,广泛应用于各类场景。今天我们来讲讲在 .NET 中使用 DocNET 库快速高效的操作 PDF 文档。
项目介绍
DocNET 是一个基于 .NET 开源(MIT license)、跨平台(支持Windows、Linux和macOS平台)的旨在提供快速 PDF 编辑和数据提取的操作库。它是基于 Chromium 所使用的 PDFium C++ 库开发的 .NET Standard 2.0 封装库。
项目特性
PDF 提取功能:支持 PDF 版本、页数、页面宽度、页面高度、页面文本、字符字体大小等相关PDF信息提取。
PDF 编辑功能: 支持分割 PDF 文档、合并 PDF 文档、解锁 PDF 文档。
支持渲染页面为图像、JPEG 图片转换为 PDF 文件等等。
项目源代码
创建DocNETExercises控制台应用
创建一个名为 DocNETExercises 的.NET 9 控制台应用:
Docnet.Core NuGet包安装
在 NuGet 包管理器中搜索 Docnet.Core 安装:
获取 PDF 文件页码和版本
/// <summary> /// 获取 PDF 文件页码和版本 /// </summary> public static void GetPDFPageCountAndVersion() { using var docReader = _docNetInstance.GetDocReader(FilePath, new PageDimensions(1080, 1920)); var getPageCount = docReader.GetPageCount(); var getPdfVersion = docReader.GetPdfVersion(); Console.WriteLine($"PageCount:{getPageCount},PdfVersion:{getPdfVersion}"); }
获取 PDF 文件的文本内容
/// <summary> /// 获取 PDF 文件的文本内容 /// </summary> public static void GetPDFText() { using var docReader = _docNetInstance.GetDocReader(FilePath, new PageDimensions(1080, 1920)); using var pageReader = docReader.GetPageReader(0); //注意pageIndex从0开始
/// <summary> /// 将 PDF 文件转换为图片 /// </summary> public static void PDFConvertToImage() { using var docReader = _docNetInstance.GetDocReader(FilePath, new PageDimensions(1080, 1920)); //指定第一页 using var pageReader = docReader.GetPageReader(0);
var rawBytes = pageReader.GetImage(); var width = pageReader.GetPageWidth(); var height = pageReader.GetPageHeight(); var characters = pageReader.GetCharacters();
using var bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
private static void DrawRectangles(Bitmap bmp, IEnumerable<Character> characters) { var pen = new Pen(Color.Red);
using var graphics = Graphics.FromImage(bmp);
foreach (var c in characters) { var rect = new Rectangle(c.Box.Left, c.Box.Top, c.Box.Right - c.Box.Left, c.Box.Bottom - c.Box.Top); graphics.DrawRectangle(pen, rect); } }