• Ghostscript.Net Pdf 转 Image


    需求:

      项目中需要实现PPT转Image的功能,之前项目中用的是使用Office COM组件实现的功能,通过.NET与Office COM组件的互操作(Interop)来操作Office文档

    但是在生产环境中经常发生错误 "检索 COM 类工厂中 CLSID 为 {91493441-5A91-11CF-8700-00AA0060263B} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。 (异常来自 HRESULT:0x8000401A)。",很是郁闷,在网上找了很多资料也没能完美的解决,然后就换了一种解决方案将PPT 转换成PDF 然后在将PDF 转换成Image。

      最后是使用 Ghostscript.Net 这个开源组件,来重写这个功能模块。

      第一步:

        下载 Ghostscript AGPL Release  32bit安装到本地 

          

      第二步:

        有两种使用方案:

          1、使用本地安装的【服务器上需要安装上述程序】

          2、找到dll拷贝到项目中,在项目中应用【不许安装,只需拷贝dll到bin下】

                      

    示例代码C#:

     1       static void Main(string[] args)
     2         {
     3             int desired_x_dpi = 96;
     4             int desired_y_dpi = 96;
     5             string inputPdfPath = "";
     6             string outputPath = "";
     7 
     8             //本地安装版本代码
     9             //var _lastInstalledVersion =
    10             //      GhostscriptVersionInfo.GetLastInstalledVersion(
    11             //              GhostscriptLicense.GPL | GhostscriptLicense.AFPL,
    12             //              GhostscriptLicense.GPL);
    13 
    14             //拷贝到项目版本
    15             var _lastInstalledVersion = new GhostscriptVersionInfo($"{System.Environment.CurrentDirectory}\gsdll32.dll");
    16 
    17             var _rasterizer = new GhostscriptRasterizer();
    18 
    19             _rasterizer.Open(inputPdfPath, _lastInstalledVersion, false);
    20 
    21             for (int pageNumber = 1; pageNumber <= _rasterizer.PageCount; pageNumber++)
    22             {
    23                 string pageFilePath = Path.Combine(outputPath, "Page-" + pageNumber.ToString() + ".Jpeg");
    24                 Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, pageNumber);
    25                 img.Save(pageFilePath, ImageFormat.Jpeg);
    26 
    27                 Console.WriteLine(pageFilePath);
    28             }
    29         }

    参考资料:

      https://ghostscriptnet.codeplex.com/SourceControl/latest#Ghostscript.NET/Ghostscript.NET.Samples/Samples

  • 相关阅读:
    2017——我们为什么选择JAVA?JAVA的发展方向和学习方法(必看)
    Java
    4中引用(强,软,弱,虚)侧重弱引用
    面试常见问题
    一个牛人给java初学者的建议
    java转换图片压缩生成webp格式
    JVM-String常量池与运行时常量池
    轮滑基础(一)(前摔,葫芦步,推步,A字转弯,弓步转弯)
    单词本
    可空值 DateTime? ToString("yy-MM-dd")
  • 原文地址:https://www.cnblogs.com/wodemingtian/p/6490099.html
Copyright © 2020-2023  润新知