转换PDF图像格式

来源:互联网 发布:军用软件无线电网关 编辑:程序博客网 时间:2024/04/29 15:04
  http://blog.csdn.net/FollowIT/archive/2007/06/19/1658183.aspx
具体要求:转换PDF--->TIFF
背景:在FAX过程中,会碰到FAX,PDF文件的情况,因为FAX并不支持.pdf的文件格式,所以要求我们能够自动转换PDF到TIFF格式
 
测试了很多方法,但都是有问题,几个比较好的连接
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1038875&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1675180&SiteID=1
http://www.atalasoft.com/kb/Article.aspx?id=10125
PDF的格式与MS提供的TIFF,JPG等,有着很大的区别,需要第三方dll,但试着下载一些dll在.net里面,这次终于可以了,发现有PDF转换到TIFF,得到的TIFF文件有DLL开发商的,一些公司图标(防止我盗用吧),因为没有成功,也就不贴出来了;
看来还是我技术有待提高啊,为此苦闷了好几天,最后下定决心,其实是客户逼得,给MONEY就加油吧,讲一下我的解决方案吧,虽然已经实现了,我会不断完善方法(此不是最终的版本),希望给大家一些信息,谁有好的解决方案也可以和我交流一下。
首先下载GhostScript 和ImageMagick
Ghostscript是一套建基於Adobe、PostScript及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件
下载gs854w32.exe
url:
http://www.ghostscript.com/awki
下载ImageMagick-6.3.4-5-Q16-windows-dll.exe
url:
http://www.imagemagick.com.cn/download.html
然后就是安装,先安装GhostScript,然后是ImageMagick
通过.net,调用command指令,例如:
convert -depth 8 -type TrueColor -compress Group4 pdf.pdf tif.tif
此句意思是把pdf.pdf转换为tif.tif格式
更多信息,可以参考:http://www.imagemagick.com.cn/
附件1:
c#.net code:
         #region Run command
         private bool runCommand()//string inputFileFullName, string outputFileFullName)
         {
              bool _statusFlag = true;
              string _dosLine = "";
              Process myproc = new Process();
              try
              {
                   myproc.StartInfo.FileName = "cmd.exe";
                   //                 myproc.StartInfo.Arguments = "";
                   myproc.StartInfo.UseShellExecute = false;
                   myproc.StartInfo.RedirectStandardInput = true;
                   myproc.StartInfo.RedirectStandardOutput = true;
                   myproc.StartInfo.RedirectStandardError = true;
                   myproc.StartInfo.CreateNoWindow = true;
                   myproc.Start();
                   _dosLine = @"convert -depth 8 -type TrueColor -compress Group4 " + this.inputFileFullName.Trim() + " " + this.outputFileFullName.Trim() + ">NUL";
                   myproc.StandardInput.WriteLine(_dosLine);
                   myproc.StandardInput.WriteLine("exit");
                   while(!myproc.HasExited)
                   {
                       myproc.WaitForExit(60000);
                   }
                   if(!myproc.StandardError.ReadToEnd().Trim().ToString().Equals(""))
                   {
                       _statusFlag = false;
                   }
                   myproc.StandardError.Close();
              }
              catch(Exception ex)
              {
                   _statusFlag = false;
              }
              finally
              {
                   try
                   {
                       myproc.Close();
                       myproc.Dispose();
                   }
                   catch(Exception ex)
                   {
                       _statusFlag = false;
                   }
              }
              return _statusFlag;
         }
         #endregion
向各个连接,提供信息的同行表示感谢
http://blog.csdn.net/FollowIT/archive/2007/06/19/1658183.aspx
原创粉丝点击