如何使用SWFTools 命令 将pdf文件转换为swf文件,并进行在线浏览
第一步:将pdf文件转为swf文件,具体步骤如下: 1,首先下载并安装SWFTools工具,下载路径:点击打开链接 2,然后使用命令 pdf2swf 123.pdf -o 123.swf ? ? 2.1 ?这里注意SWFTools 工具安装路径的问题,如果安装在C盘 则直接使用命令C:pdf2swf 123.pdf -o 123.swf,但是如果安装在D盘目录下 则需要将命令切换到D盘在使用D:pdf2swf 123.pdf -o 123.swf该指令。 ? ? 切换指令cd 回车,在输入D: 回车即可 ? ?? ? ? ?如果SWFTools工具安装在C盘的SWFTools文件夹下 则输入命令行 C:SWFToolspdf2swf 123.pdf -o 123.swf ? ? 2.2 要转换的pdf文件必须和SWFTools安装路径保持一致,否则无法找到该pdf文件。 这样即可实现pdf文件转换为swf文件。 第二步:通过FlexPaperViewer将转换好的swf文件显示在页面上 1,页面添加jquery.js,flexpaper_flash.js和flexpaper_flash_debug.js的引用 2,将已经转换好的swf和FlexPaperViewer.swf放在web应用的某个文件夹下,本实例中放在ReportTemplate文件夹下 3,如下在页面中这样编码即可实现PDF文件的在线预览功能 <div id="divGrid" style="display:block;height:680px;"></div> <script type="text/javascript"> var fp = new FlexPaperViewer( '/ReportTemplate/FlexPaperViewer','divGrid',{ config : { SwfFile: escape('/ReportTemplate/123.swf'),Scale : 0.6,ZoomTransition : 'eaSEOut',ZoomTime : 0.5,ZoomInterval : 0.2,FitPageOnLoad : true,FitWidthOnLoad : true,PrintEnabled : true,FullScreenAsMaxWindow : false,ProgressiveLoading : false,MinZoomSize : 0.2,MaxZoomSize : 5,SearchMatchAll : false,InitViewMode : 'Portrait',ViewModeToolsVisible : true,ZoomToolsVisible : true,NavToolsVisible : true,CursorToolsVisible : true,SearchToolsVisible : true,localeChain: 'zh_CN' }}); </script> ?<!--这句是关键: SwfFile: 指示导入的.swf的路径--> 以下附上通过C#程序将pfd文件转为swf文件的代码实现过程: public static class PSD2swfHelper { /// <summary> /// 转换所有的页,图片质量80% /// </summary> /// <param name="pdfPath">PDF文件地址</param> /// <param name="swfPath">生成后的SWF文件地址</param> public static bool PDF2SWF(string pdfPath,string swfPath) { return PDF2SWF(pdfPath,swfPath,1,GetPageCount(HttpContext.Current.Server.MapPath(pdfPath)),80); } /// <summary> /// 转换前N页,图片质量80% /// </summary> /// <param name="pdfPath">PDF文件地址</param> /// <param name="swfPath">生成后的SWF文件地址</param> /// <param name="page">页数</param> public static bool PDF2SWF(string pdfPath,string swfPath,int page) { return PDF2SWF(pdfPath,page,80); } /// <summary> /// PDF格式转为SWF /// </summary> /// <param name="pdfPath">PDF文件地址</param> /// <param name="swfPath">生成后的SWF文件地址</param> /// <param name="beginpage">转换开始页</param> /// <param name="endpage">转换结束页</param> private static bool PDF2SWF(string pdfPath,int beginpage,int endpage,int photoQuality) { string exe = HttpContext.Current.Server.MapPath("pdf2swf.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"); sb.Append(" -s languagedir="E:xpdfxpdf-chinese-simplified""); 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("~/Bin/"); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = false; p.Start(); p.BeginErrorReadLine(); p.WaitForExit(); p.Close(); p.Dispose(); return true; } /// <summary> /// 返回页数 /// </summary> /// <param name="pdfPath">PDF文件地址</param> 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(@"/Types*/Page[^s]"); System.Text.RegularExpressions.MatchCollection matches = rx1.Matches(pdfText); return matches.Count; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |