.NET使用DocNET库实现快速高效的操作PDF文档

 更新时间:2025年07月21日 08:41:55   作者:追逐时光者  
PDF 文档,作为日常工作中不可或缺的文档格式,广泛应用于各类场景,DocNET 是一个基于 .NET 开源操作库,下面我们来看看.NET如何使用DocNET库实现快速高效的操作PDF文档吧

前言

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开始

            // 获取指定页面的文本(自动处理编码)
            string pageText = pageReader.GetText();

            Console.WriteLine(pageText);
        }

将 JPEG 图片转换为 PDF 文件​​​​​​​

 /// <summary>
        /// 将 JPEG 图片转换为 PDF 文件
        /// </summary>
        public static void JPEGImageConvertToPDF()
        {
            var file = new JpegImage
            {
                Bytes = File.ReadAllBytes("Assets/image1.jpeg"),
                Width = 580,
                Height = 387
            };

            var bytes = _docNetInstance.JpegToPdf(new[] { file });

            File.WriteAllBytes("Assets/output_file.pdf", bytes);
        }

将 PDF 文件转换为图片

  /// <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);

            AddBytes(bmp, rawBytes);
            DrawRectangles(bmp, characters);

            using var stream = new MemoryStream();

            bmp.Save(stream, ImageFormat.Png);

            File.WriteAllBytes("Assets/output_image.png", stream.ToArray());
        }

        private static void AddBytes(Bitmap bmp, byte[] rawBytes)
        {
            var rect = new Rectangle(0, 0, bmp.Width, bmp.Height);

            var bmpData = bmp.LockBits(rect, ImageLockMode.WriteOnly, bmp.PixelFormat);
            var pNative = bmpData.Scan0;

            Marshal.Copy(rawBytes, 0, pNative, rawBytes.Length);
            bmp.UnlockBits(bmpData);
        }

        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);
            }
        }

项目源码地址

更多项目实用功能和特性欢迎前往项目开源地址查看。

到此这篇关于.NET使用DocNET库实现快速高效的操作PDF文档的文章就介绍到这了,更多相关.NET操作PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于ListView下隐藏控件的解决方案分享

    关于ListView下隐藏控件的解决方案分享

    想实现一个功能,这个功能挺简单,就是当不是管理员用户登入的时候,那这个 删除 按钮就被隐藏掉;当是管理员用户的时候,就重新显示出来
    2012-04-04
  • ASP.NET怎么操作DataTable实例应用

    ASP.NET怎么操作DataTable实例应用

    有机会在博客园的博问频道上看到一个问题,《ASP.NET怎么操作DataTable》;需要的朋友可以参考下
    2012-11-11
  • ASP.NET Core快速入门之实战篇

    ASP.NET Core快速入门之实战篇

    这篇文章主要介绍了ASP.NET Core快速入门之实战篇,对跨平台框架感兴趣的同学,可以参考下
    2021-04-04
  • ASP.NET MVC自定义异常过滤器使用案例

    ASP.NET MVC自定义异常过滤器使用案例

    本文详细讲解了ASP.NET MVC自定义异常过滤器的使用案例,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下<BR>
    2022-03-03
  • ASP.NET实现的简单易用文件上传类

    ASP.NET实现的简单易用文件上传类

    这篇文章主要介绍了ASP.NET实现的简单易用文件上传类,本文给出实现代码和使用方法示例,需要的朋友可以参考下
    2015-06-06
  • ASP.NET Core构建OData查询Restful API

    ASP.NET Core构建OData查询Restful API

    这篇文章主要为大家介绍了ASP.NET Core建构OData实体模型实现Restful API查询,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • 为每个页面加上Session判断的小例子

    为每个页面加上Session判断的小例子

    这篇文章介绍了在每个页面加上Session判断的简单实例,有需要的朋友可以参考一下
    2013-10-10
  • asp.net 使用Response.Filter 过滤非法词汇

    asp.net 使用Response.Filter 过滤非法词汇

    一般信息发布网站,论坛等均具有实现非法词汇过滤功能,即当用户录入非法词汇时,进行替换,使其无法显示到页面上,针对此种功能,通常采用的时,在读取时,在读到非法词汇后,进行替换。
    2010-03-03
  • C#图片截取压缩(百分比压缩/大小压缩)实现代码

    C#图片截取压缩(百分比压缩/大小压缩)实现代码

    为了娱乐写了个截取图片和压缩图片你的小工具:按照百分比压缩/制定大小压缩等等,感兴趣的朋友可以了解下啊,希望本文对你学些c#图片知识有所帮助
    2013-01-01
  • C# 事件的设计与使用深入理解

    C# 事件的设计与使用深入理解

    事件是用于通知其他对象发生了本对象发生了特定的事情的类型成员;事件是.NET类型成员中相对较为难以理解和实践的一个成员,因为事件的定义不是继承自基础的数据类型,而是对委托(delegate)的封装。所以,在了解事件之前,你需要先了解一点委托
    2012-12-12

最新评论