用户名: 密码: 免费注册 忘记密码? 网站地图 | 加入收藏 | 设为首页
首页 | 新闻 | 工具 | 系统 | 办公 | 聊天 | 多媒体 | 网页 | 运营 | 平面 | 欣赏 | 数据库 | 程序 | 服务器 | 组网
网页 | 3dmax | Ghost | Windows Xp| Dreamweaver | photoshop | Flash | office | Alexa | Css | QQ | Asp | PHP | Jsp | Access
Flash MX 2004入门 | 网站推广策略 | CorelDRAW入门 | ASP学习 | 网站建设大师功 | Word入门
  iTbulo.com > 学院 > 程序开发教程 > ASP.net教程 > Asp.Net实例教程 > 文章正文
ASP.Net实现将Word转换PDF格式
iTbulo.COM 2006-12-27 天极()

  你可以安照该脚本改写成,支持多个参数,使用FOR循环,一次转换多个WORD文档,此处没有使用多个文件转换功能,是考虑到,该段脚本放在C#的线程中执行,这样一来也可以转换多个WORD文档.

四:使用C#调用ConvertDoc2PDF.js脚本

  新建一个C#的WINDOWS应用程序,添加一个按钮button1

  添加一个函数,函数名StartConvertPDF

以下是引用片段:
  public void StartConvertPDF()
  {
  Process proc = new Process();
  proc.StartInfo.FileName = "cmd.exe";
  proc.StartInfo.WorkingDirectory = @"c:\";
  proc.StartInfo.CreateNoWindow = true;
  proc.StartInfo.UseShellExecute = false;
  proc.StartInfo.RedirectStandardInput = true; //输入重定向
  proc.Start();
  proc.StandardInput.WriteLine(@"cscript //nologo c:\ConvertDoc2PDF.js c:\test.doc c:\");
  proc.StandardInput.WriteLine("exit");
  proc.WaitForExit();
  }

  然后在按钮的CLICK事件中添加调用线程的代码

以下是引用片段:
  private void button1_Click(object sender, System.EventArgs e)
  {
  //定义线程序
  Thread thConvert = new Thread(new ThreadStart(StartConvertData));
  thConvert.Start();
  }

  注意:在测试上面的C#程序时,必须添加如下命名空间

  using System.Diagnostics;

  using System.Threading;

五:健壮的C#调用代码(实际考虑,可放在B/S系统中)

  完成第4步的C#测试后,细心的读者,可能看到一点问题,那就是如何得到脚本运行后输出的结果,如何给线程中调用的StartConvertData方法传递参数

  1:传递参数,此话说来也可用一篇教程告诉大家线程中方法如何来传递参数,现在就讲一个方案,此种方案很多,我采用一个类,初始化这个类,然后调用该类的方法作为线程执行的方法

  2:得到脚本的输出结果,使用Process对象的输出重定向,就是说改变输出方向,使脚本不输出到控制台(MS-DOS窗口),而是重定向输出到C#程序中,并采用线程的异步回调方法,显示脚本运行结果。

  添加一个新类,类名为ToPdf

以下是引用片段:
  using System;
  using System.Diagnostics;
  using System.ComponentModel;
  using System.Windows.Forms;
  using System.Data;
  namespace Doc2Pdf
  {
  public class ToPdf
  {
  private string strWord = "";//此处的WORD文件不含路径
  private string sPath = "";
  public string sExecResult = "";
  public bool bSuccess = false;
  public ToPdf(string sParamWord,string sParamPath)
  {
  strWord = sParamWord;
  sPath = sParamPath;
  }
  public void StartConvertPDF()
  {
  Process proc = new Process();
  proc.StartInfo.FileName = "cmd.exe";
  proc.StartInfo.WorkingDirectory = sPath;
  proc.StartInfo.CreateNoWindow = true;
  proc.StartInfo.UseShellExecute = false;
  proc.StartInfo.RedirectStandardInput = true;//标准输入重定向
  proc.StartInfo.RedirectStandardOutput = true;//标准输出重定向
  proc.Start();
  proc.StandardInput.WriteLine("cscript //nologo "+sPath+"ConvertDoc2PDF.js "+sPath+strWord+ " "+sPath);
  proc.StandardInput.WriteLine("exit");
  sExecResult = proc.StandardOutput.ReadToEnd();//返回脚本执行的结果
  proc.WaitForExit();
  proc.Close();
  }
  public void EndConvertPDF(System.IAsyncResult ar)//ar参数必须写,是线程执行完成后的回调函数
  {
  if(sExecResult.IndexOf("isuccess")!=-1)bSuccess=true;
  else if(sExecResult.IndexOf("isfail")!=-1)bSuccess=false;
  //如果放在B/S系统,你可以在此处写数据库,是成功还是失败,并用一个WEBService程序不断检查数据库,此WEBService程序不放在该回调用函数中
  //如果放在C/S系统,回调函数可以不放在类中,以便在窗体程序中调用结果
  }
  }
  }

上一页  [1] [2] [3] 下一页

文章搜索
相关资讯
相关文章 相关下载
在ASP.NET中上传图片并生成缩略图
Excel在.Net下驻留内存的解决方法
ASP.NET中常用的优化性能方法详解
网友原创:从N层到.NET详细剖析原理
经验之谈:MySQL与ASP.NET配合更强大
焦点信息