<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

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

      項目源碼地址

      更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。

      優秀項目和框架精選

      該項目已收錄到C#/.NET/.NET Core優秀項目和框架精選中,關注優秀項目和框架精選能讓你及時了解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的項目和框架不被埋沒??)。

      DotNetGuide技術社區

      • DotNetGuide技術社區是一個面向.NET開發者的開源技術社區,旨在為開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和咨詢、項目框架推薦、求職和招聘資訊、以及解決問題的平臺。
      • 在DotNetGuide技術社區中,開發者們可以分享自己的技術文章、項目經驗、學習心得、遇到的疑難技術問題以及解決方案,并且還有機會結識志同道合的開發者。
      • 我們致力于構建一個積極向上、和諧友善的.NET技術交流平臺。無論您是初學者還是有豐富經驗的開發者,我們都希望能為您提供更多的價值和成長機會。

      歡迎加入DotNetGuide技術社區微信交流群??

      posted @ 2025-07-21 08:00  追逐時光者  閱讀(2151)  評論(6)    收藏  舉報
      主站蜘蛛池模板: 久久天天躁狠狠躁夜夜2020老熟妇 | 亚洲av男人电影天堂热app| 国产成人夜色高潮福利app| 欧美人成精品网站播放| 免费看男女做好爽好硬视频| 亚洲国产精品久久无人区| 天堂v亚洲国产v第一次| 欧美人与动牲交A免费观看| 天堂a无码a无线孕交| 亚洲天天堂天堂激情性色| caoporn免费视频公开| 国产AV无码专区亚洲AV漫画| 日韩一区二区三区精彩视频| av无码小缝喷白浆在线观看| 欧美性猛交xxxx免费看| 精品偷拍一区二区三区| 国内精品极品久久免费看| 亚洲人成线无码7777| 国产普通话对白刺激| 诸城市| 国产精品国语对白一区二区| 九九在线精品国产| 报价| 极品美女自拍偷精品视频| 九九热免费精品视频在线| 在线高清免费不卡全码| 亚洲精品成人综合色在线| 性色在线视频精品| 国产69精品久久久久99尤物| 精品国产亚洲午夜精品a| 日韩国产中文字幕精品| 久久亚洲人成网站| 国产精品丝袜亚洲熟女| free性开放小少妇| 开心五月激情综合久久爱| 一边吃奶一边做动态图| 日韩精品一区二区三区中文无码| 无码免费大香伊蕉在人线国产| 玩弄漂亮少妇高潮白浆| 久久毛片少妇高潮| 日本久久99成人网站|