Pdfium.Net.Free 添加 bblanchon.PDFium nuget方式

介绍见上文

跨平台环境下 建议引用第三方pdfium依赖项

dotnet add package bblanchon.PDFium --version 135.0.7009

如下图

 目录下会添加多平台的依赖包

然后添加如下代码即可,此代码会加载传入的pdfium

复制代码
 public static class PdfiumRegistrations
 {
     static string filePrefix = "runtimes";
     public static void AddPdfiumResolver(this IServiceCollection services)
     {
         PdfiumResolver.Resolve += (s, e) =>
         {
             var platform = e.OSPlatform;
             if (platform == OSPlatform.Windows)
             {
                 e.PdfiumFileName = GetWindowsFileName();
             }
             else if (platform == OSPlatform.Linux)
             {
                 e.PdfiumFileName = GetLinuxFileName();
             }
             else if (platform == OSPlatform.OSX)
             {
                 e.PdfiumFileName = GetOSXFileName();
             }
             else
             {
                 throw new Exception($"pdfium not support OSPlatform{platform.ToString()}");
             }
         };
     }

     public static string GetWindowsFileName()
     {
         switch(RuntimeInformation.OSArchitecture)
         {
             case Architecture.X64:
                 return Path.Combine(filePrefix, "win-x64", "native", "pdfium.dll");
             case Architecture.X86:
                 return Path.Combine(filePrefix, "win-x86", "native", "pdfium.dll");
             case Architecture.Arm64:
                 return Path.Combine(filePrefix, "win-arm64", "native", "pdfium.dll");
             default:
                 return "";
         }
     }

     public static string GetLinuxFileName()
     {
         switch (RuntimeInformation.OSArchitecture)
         {
             case Architecture.X64:
                 return Path.Combine(filePrefix, "linux-x64", "native", "libpdfium.so");
             case Architecture.X86:
                 return Path.Combine(filePrefix, "linux-x86", "native", "libpdfium.so");
             case Architecture.Arm:
                 return Path.Combine(filePrefix, "linux-arm", "native", "libpdfium.so");
             case Architecture.Arm64:
                 return Path.Combine(filePrefix, "linux-arm64", "native", "libpdfium.so");
             default:
                 return "";
         }
     }
     public static string GetOSXFileName()
     {
         switch (RuntimeInformation.OSArchitecture)
         {
             case Architecture.X64:
                 return Path.Combine(filePrefix, "osx-x64", "native", "libpdfium.dylib");
             case Architecture.Arm64:
                 return Path.Combine(filePrefix, "osx-arm64", "native", "libpdfium.dylib");
             default:
                 return "";
         }
     }

 }
复制代码

 

posted @   小树禾小央  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示