zoukankan      html  css  js  c++  java
  • C#pdf 切割成图片

     引用

    using Ghostscript.NET;
    using Ghostscript.NET.Rasterizer;

    需要安装 exe文件

    public static GhostscriptVersionInfo _lastInstalledVersion = null;
            public static GhostscriptRasterizer _rasterizer = null;

    PdfToImages(string pdfInputPath, string imageOutputPath)

     
                    //解析度
                    int desired_x_dpi = Convert.ToInt32(96);
                    int desired_y_dpi = Convert.ToInt32(96);

      Log.writeLog("生成临时文件夹");
                    var destFile = GetFilePath(pdfInputPath);
                    Log.writeLog("复制pdf资料");
                    System.IO.File.Copy(pdfInputPath, destFile, true);
                    Log.writeLog("复制pdf资料完成");
                    if (System.IO.File.Exists(destFile))
                    {
                        try
                        {

      _lastInstalledVersion =                             GhostscriptVersionInfo.GetLastInstalledVersion(                        GhostscriptLicense.GPL | GhostscriptLicense.AFPL,                        GhostscriptLicense.GPL);

                            _rasterizer = new GhostscriptRasterizer();

                            _rasterizer.Open(destFile, _lastInstalledVersion, false);

             for (var i = 1; i <= endPageNum; i++)                  

           {                          

                 string pageFilePath = Path.Combine(imageOutputPath, imageName + "_" + i.ToString() + "." + imageFormat.ToString());

                                Image img = _rasterizer.GetPage(desired_x_dpi, desired_y_dpi, i);  

              img.Save(pageFilePath, ImageFormat.Jpeg);

       }
                            _rasterizer.Dispose();
                        }
                        catch (Exception ex)
                        {
                            Log.writeLog("Exception:" + ex.ToString());
                            System.IO.File.Delete(destFile);
                        }
                        finally
                        {
                            Log.writeLog("finally:删除资料");
                            System.IO.File.Delete(destFile);
                            //System.IO.Direc

    }

     /// <summary>
            /// 根据源文件路径获取新重新命名的文件路径
            /// </summary>
            /// <param name="filePath"></param>
            /// <returns></returns>
            static string GetFilePath(string filePath)
            {
                if (string.IsNullOrWhiteSpace(filePath))
                {
                    return string.Empty;
                }
                else
                {
                    return string.Format("{0}{1}{2}", filePath.Substring(0, filePath.LastIndexOf('\') + 1), Guid.NewGuid().ToString("N").Replace("-", ""), filePath.Substring(filePath.LastIndexOf('.')));
                }
            }

  • 相关阅读:
    高并发处理思路与手段(七):数据库切库(读写分离)、分库、分表
    高并发处理思路与手段(六):服务降级与服务熔断
    memcached(一):linux下memcached安装以及启动
    高并发处理思路与手段(五):应用限流
    高并发处理思路与手段(四):应用拆分
    高并发处理思路与手段(三):消息队列
    Java数据结构和算法(六):前缀、中缀、后缀表达式
    Java数据结构和算法(五):队列
    flask_limiter 实践与原理解析
    Python -- 限流 throttle
  • 原文地址:https://www.cnblogs.com/qhy1277/p/4962009.html
Copyright © 2011-2022 走看看