using System.Web; using System.Text; namespace Ant.Service.Utilities { public static class PSD2swfHelper { /// /// 转换所有的页,图片质量80% /// /// PDF文件地址 /// 生成后的SWF文件地址 public static bool PDF2SWF(string pdfPath, string swfPath) { return PDF2SWF(pdfPath, swfPath, 1, GetPageCount(HttpContext.Current.Server.MapPath(pdfPath)), 80); } /// /// 转换前N页,图片质量80% /// /// PDF文件地址 /// 生成后的SWF文件地址 /// 页数 public static bool PDF2SWF(string pdfPath, string swfPath, int page) { return PDF2SWF(pdfPath, swfPath, 1, page, 80); } /// /// PDF格式转为SWF /// /// PDF文件地址 /// 生成后的SWF文件地址 /// 转换开始页 /// 转换结束页 private static bool PDF2SWF(string pdfPath, string swfPath, int beginpage, int endpage, int photoQuality) { string exe = HttpContext.Current.Server.MapPath("~/DLL/tools/pdf2swf-0.9.1.exe"); pdfPath = HttpContext.Current.Server.MapPath(pdfPath); swfPath = HttpContext.Current.Server.MapPath(swfPath); if (!System.IO.File.Exists(exe) || !System.IO.File.Exists(pdfPath) || System.IO.File.Exists(swfPath)) { return false; } StringBuilder sb = new StringBuilder(); sb.Append(" \"" + pdfPath + "\""); sb.Append(" -o \"" + swfPath + "\""); sb.Append(" -s flashversion=9"); if (endpage > GetPageCount(pdfPath)) endpage = GetPageCount(pdfPath); sb.Append(" -p " + "\"" + beginpage + "" + "-" + endpage + "\""); sb.Append(" -j " + photoQuality); string Command = sb.ToString(); System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = exe; p.StartInfo.Arguments = Command; p.StartInfo.WorkingDirectory = HttpContext.Current.Server.MapPath("~/DLL/"); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = false; p.Start(); p.BeginErrorReadLine(); p.WaitForExit(); p.Close(); p.Dispose(); return true; } /// /// 返回页数 /// /// PDF文件地址 private static int GetPageCount(string pdfPath) { byte[] buffer = System.IO.File.ReadAllBytes(pdfPath); int length = buffer.Length; if (buffer == null) return -1; if (buffer.Length <= 0) return -1; string pdfText = Encoding.Default.GetString(buffer); System.Text.RegularExpressions.Regex rx1 = new System.Text.RegularExpressions.Regex(@"/Type\s*/Page[^s]"); System.Text.RegularExpressions.MatchCollection matches = rx1.Matches(pdfText); return matches.Count; } } }