LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

.NET 使用 DocNET 庫快速高效的操作 PDF 文檔

admin
2025年7月31日 10:5 本文熱度 543

前言

PDF 文檔,作為日常工作中不可或缺的文檔格式,廣泛應(yīng)用于各類場景。今天我們來講講在 .NET 中使用 DocNET 庫快速高效的操作 PDF 文檔。

項(xiàng)目介紹

DocNET 是一個(gè)基于 .NET 開源(MIT license)、跨平臺(支持Windows、Linux和macOS平臺)的旨在提供快速 PDF 編輯和數(shù)據(jù)提取的操作庫。它是基于 Chromium 所使用的 PDFium C++ 庫開發(fā)的 .NET Standard 2.0 封裝庫。

項(xiàng)目特性

  • PDF 提取功能:支持 PDF 版本、頁數(shù)、頁面寬度、頁面高度、頁面文本、字符字體大小等相關(guān)PDF信息提取。
  • PDF 編輯功能: 支持分割 PDF 文檔、合并 PDF 文檔、解鎖 PDF 文檔。
  • 支持渲染頁面為圖像、JPEG 圖片轉(zhuǎn)換為 PDF 文件等等。

項(xiàng)目源代碼

創(chuàng)建DocNETExercises控制臺應(yīng)用

創(chuàng)建一個(gè)名為 DocNETExercises 的.NET 9 控制臺應(yīng)用:

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 文件的文本內(nèi)容

        /// <summary>
        /// 獲取 PDF 文件的文本內(nèi)容
        /// </summary>
        public static void GetPDFText()
        {
            using var docReader = _docNetInstance.GetDocReader(FilePath, new PageDimensions(1080, 1920));
            using var pageReader = docReader.GetPageReader(0); //注意pageIndex從0開始

            // 獲取指定頁面的文本(自動(dòng)處理編碼)
            string pageText = pageReader.GetText();

            Console.WriteLine(pageText);
        }

將 JPEG 圖片轉(zhuǎn)換為 PDF 文件

        /// <summary>
        /// 將 JPEG 圖片轉(zhuǎn)換為 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 文件轉(zhuǎn)換為圖片

        /// <summary>
        /// 將 PDF 文件轉(zhuǎn)換為圖片
        /// </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);
            }
        }

項(xiàng)目源碼地址

更多項(xiàng)目實(shí)用功能和特性歡迎前往項(xiàng)目開源地址查看??,別忘了給項(xiàng)目一個(gè)Star支持??。


閱讀原文:點(diǎn)擊此處


該文章在 2025/7/31 10:06:29 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩AV在线免费不卡 | 中文一区二区三区欧美在线 | 亚洲最大色资源在线观看 | 久久精品国产一区二区三区 | 亚洲高清无在码在线看片 | 自偷自拍三级视频在线观看 |