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 @ 2025-02-11 16:36  小树禾小央  阅读(69)  评论(0)    收藏  举报