zoukankan      html  css  js  c++  java
  • Word转Chm 在线转换应用

    WordChm 在线转换应用

    大约去年什么时候 ,写一个软件产品的操作手册。写完以后,用户要求提供Chm格式的帮助文档。于是上网查搜索了一翻。有一些客户端转换软件可以使用,不过大都需要注册,而且有些转换错误或是转换不完整。国外有一个软件,下载下来测试了一下,效果还不错,不过注册费用需要300~500美元,那可用不起。于是程序员的本性毕露。化了几天时间,写了一个原型,能够把自己的操作手册从Word格式转换成Chm

    最近国内各大开放平台比较火,比如,腾讯开放平台、百度开放平台、360开放平台等。我有一些朋友也在开放平台上写了一些应用。谈起应用开发,我也想尝试一下开放平台应用开发是怎么回事,于是想把以前写过的WordChm的程序拿来偿试一下。

    原来写的程序是客户端程序,开放平台的应用一般都是web应用、或是falsh、或是手机应用。把客户端程序改造成web程序,想着简单,实际去做了,才发现不是一般的麻烦,原以为化几天时间就可以完成,没想到化了几周时间才完成,现在终于上线了。有兴趣的朋友可以去测试一下。腾讯开放平台:http://rc.qzone.qq.com/100653271

    上面说到从客户端转到web出现了一些问题,主要原因是因为程序是使用了Microsoft.Office.Interop.Word 类库来处理Word文档。下面简单介绍一下。

     

    1. WordChm原理

    WordChm原理其实很简单。一般操作手册一类的Word文档,会设置大纲结构,按章节目录进行大纲设置,在Word视图中,显示导航窗格时,可以清楚地看见大纲目录结构。Chm的制作,微软有现成的工具可以使用,其过程也很简单,主要是以下几步:

    1) 你准备了很多html,需要把这些html文件生成Chm;

    2) 生成一个hhp文件,也叫Chm项目文件,指定了生成Chm的各种参数。

    3) 生成一个hhc文件,意思是Chm目录中的项,指向哪个html文件。

    4) 生成一个hhk索引文件,在Chm的索引中是显。

    5) 调用hhc.exe对上面生成的文件进行编译,就生成了Chm文件。

    那所谓WordChm,无非是把Word根据大纲结构拆成多个html文件,然后生成上面所讲的几个文件,然后调用hhc生成Chm

    上面所说的过程,需要使用Microsoft.Office.Interop.Word提供的接口,取得大纲结构,调用Word另存为html文件接口,保存为html文件。因为要使用Microsoft.Office.Interop.Word,调用Microsfot Word程序,带来了一些麻烦。

    2. 服务器端的Office自动化

    原来在客户端写代码时,用户是本地的管理员,调用Word接口,没有任何问题。一旦改成Web方式,则会有很大的问题。

    按照微软件的说法是:http://support.microsoft.com/kb/257757

    Microsoft 目前建议不要从任何无人参与的、非交互式客户端应用程序或组件(包括 ASPDCOM NT Service)中进行 Microsoft Office 应用程序的“自动化”,也不为此提供支持,因为 Office 在这种环境中运行时可能会出现不稳定的现象并且/或者会死锁。”

    这就是死穴。上面的链接文档说得很清楚。如果你想在服务器端调用Office自动化功能,它的建议就是不要调用。非要调用,那要解决的问题很多,而且不保证能用。

    在调试过程中,主要注意如下问题:

     

    1)       配置服务器端的Word运行环境。

    关于这个问题,还是参考上面的文档,在文档有很多链接,告诉你如查配置DCOMCNFG如果调试发现

    连接到服务器失败。错误: 0x80070005

    无法打开宏存储

    出现“拒绝访问权限”的错误,或者是无法打开宏存储

           等等很多错误,都是配置的问题。

    2)       设置asp.net模拟用户

    缺省的aps.net用户并没有访问Word的权限,需在设置模拟运行用户,

    <identity impersonate="true" userName="someUser" passWord="UserPassWord"/>

     

    3)       多线程运行

    客户端是单个用户运行的,web端可以有很多用户时运行,需要设置转换任务在多线程中运行。

     

    4)       排队逻辑

    如果有多个用户同运行,而服务器的能力是有限的,需要处理多个用户的排列问题。

     

    5)       守护进程

    上面说过,服务器端的自动化会出问题,如果出问题,有可能死机,有可能winword.exe进行不能关闭。所以需要一个守护进程对死的winword.exe进程进行清理。

     

    如果有什么问题可以交流。下面的链接可以在线测试,希望能有所帮助。

    http://rc.qzone.qq.com/100653271

  • 相关阅读:
    递归函数
    python学习笔记
    套接字学习笔记
    Tomcat学习笔记3
    Tomcat学习笔记2
    《Python学习手册 第五版》 -第29章 类代码编写细节
    《Python学习手册 第五版》 -第28章 一个更加实际的示例
    《Python学习手册 第五版》 -第27章 类代码编写基础
    《Python学习手册 第五版》 -第26章 OOP:宏伟蓝图
    《Python学习手册 第五版》 -第25章 高级模块话题
  • 原文地址:https://www.cnblogs.com/tp3cd/p/2697079.html
Copyright © 2011-2022 走看看