【老徐子杰】PDF转图片方法(解决中文乱码)

【老徐子杰】PDF转图片方法(解决中文乱码)

欢迎交流使用(本文原创:转载请注明出处)

在做项目的时候,说实话大公司不可能使用破解版的DLL进行开发。所以ADOBE的组建不用,基本的BIMP转法面对各种中文字符,转出来肯定乱码。所以我发现了一款开源的PDF转 PNG,TIF,甚至WORD工具。GhostScript 简称gs。 很简单。你可以不用写很复杂的代码 简单几句调用一下就行。那么开始吧。

准备工具

1.下载gs909w32.exe 安装程序 名称含义(gs9.09版32位)推荐使用更高版本:得从国外下载 无需从CSDN因为很贵 如果你有钱的话无所谓
2. C#与java都可以使用 原理:调用CMD 程序 对CMD输入调用方法。其他的交给GS处理。是不是很简单?

代码C#

    //方法传入的参数  name   是文件名地址 下面会用到。 
  StringBuilder str = new StringBuilder();
  //引用CMD的东西
                System.Diagnostics.Process p = new System.Diagnostics.Process();
                p.StartInfo.FileName = "cmd.exe";
                p.StartInfo.UseShellExecute = false;    //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                p.StartInfo.CreateNoWindow = true;//不显示程序窗口
                p.Start();//启动CMD程序
                          //向cmd窗口发送输入信息
                          //你第一步 得输入你安装程序在哪个盘
                p.StandardInput.WriteLine(ConfigurationSettings.AppSettings["DISK"]);//初期调用 得获取程序所在的盘符
                //你第二步 得cd到你的程序目录BIN下
                p.StandardInput.WriteLine("cd " + ConfigurationSettings.AppSettings["StuepPath"]);//cd 到指定程序安装目录下
                p.StandardInput.AutoFlush = true;
                //拼接固定 执行方法语句 这里是固定写法 如未查阅 GS909W32.EXE 操作手册 请勿修改任何东西
                //这里的方法是固定的 大概意思是 程序名 像素分辨率 地址 输出文件等  详细的自己查手册 
                //第一个 ConfigurationSettings.AppSettings["OutPutPath"] + @"\" + name + ".tif" 这个是输出路径和文件TIF名称 格式tif
                //第二个ConfigurationSettings.AppSettings["Path"] + @"\" + name + ".pdf" 这个是 你PDF的路径 
                //我就懒得改这些 东西了。大家肯定能看懂。 bin里有 带C和不带C的gswin64 时间有点久了 好像带C的程序不弹框 自己实验吧
                str.AppendFormat(@"gswin64.exe -r600*600 -g4960x7020   -q -dNOPAUSE -sDEVICE=tiffg4 -sOutputFile={0} {1} -c quit", ConfigurationSettings.AppSettings["OutPutPath"] + @"\" + name + ".tif", ConfigurationSettings.AppSettings["Path"] + @"\" + name + ".pdf");
                p.StandardInput.WriteLine(str);//向CMD输出 组装后的str
                p.StandardInput.WriteLine("exit");//结束 不然可能会假死
                string output = p.StandardOutput.ReadToEnd();//读取CMD的返回结果
                Console.WriteLine("CMD界面返回结果\n" + output+"\n");
                log.WriteToPrintLog("返回结果是\n" + output, name);
                p.WaitForExit();//等待程序执行完退出进程
                p.Close();
            }

//大概就是这些,如果有什么不懂的 可以问 Q732288837 很简单吧。

你可能感兴趣的:(C#)