C#word转pdf出现的问题

之前做word转pdf时经常会遇到一些问题,花费了很长时间整理了一些解决方法
1、 代码

		Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
        Microsoft.Office.Interop.Word.Document document = new Microsoft.Office.Interop.Word.Document();
        try
        {
            application.Visible = false;
            document = application.Documents.Open("d://1.doc");
            if (document == null)
            {
                //WriteLog("document is null");//打印日志
            }
            document.ExportAsFixedFormat("d://1.pdf", WdExportFormat.wdExportFormatPDF);
        }
        catch (Exception ex)
        {
           
        }
        finally
        {

            document.Close();
            application.Quit();
        }

一、检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。

1、第一种办法
1、 在"开始"->“运行"中输入dcomcnfg.exe启动"组件服务”
2、 依次双击"组件服务"->“计算机”->“我的电脑”->“DCOM配置”
3、 在"DCOM配置"中找到"Microsoft word 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft word 应用程序属性"对话框
4、点击"标识"标签,选择"交互式用户"
5、点击"安全"标签,在"启动和激活权限"、”访问权限”、”配置权限”上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名)和EveryOne用户,并给它赋予"本地启动"和"本地激活"权限
在这里插入图片描述

如果找不到Word请看序号二
2、第二种办法
在web.config中使用身份模拟,在<system.web>节中加入
</system.web>
3、第三种办法
如果环境是Server的:
打开IIS管理工具,设置应用程序池属性;右击对应的应用程序池,单击“高级设置”,在弹出的界面中找到“标识”把其内置账户修改为LocalSystem。这种简单有效。报表和word都可以。

二、如果在DCOM配置里面找不到Word文档怎么办?

  1. 第一种办法
    因为office是32位的,电脑是64位的,在运行里面输入comexp.msc -32
    依次打开”组件服务–计算机–我的电脑–DCOM配置“
    在这里插入图片描述

2、第二种办法
如果第一种办法找不到
Word可能是以这种存在”{00020906-0000-0000-C000-000000000046}“
查看方法:
选中 {00020906-0000-0000-C000-000000000046} 点击属性 找到 本地路径:C:\PROGRA2\MICROS1\Office12\WINWORD.EXE
在这里插入图片描述

如果上面方法还是没找到word组件,请用下面的方法
一般组件在未被赋值权限时,直接使用,会提示
检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005。
所以此时,复制000209FF-0000-0000-C000-000000000046
在运行中 输入 regedit 打开注册表
进行收索“000209FF-0000-0000-C000-000000000046”,你会找到下面这个:
在这里插入图片描述

将“AppID”修改为“CLSID” 然后保存 重启服务器
之后查看组件服务应该就会出现了
在这里插入图片描述

**

无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word.Application”。此操作失败的原因是对 IID 为 ·{00020970-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败

**: 库没有注册
这个问题原因是因为安装了高版本的office然后卸载掉,又安装了低版本的office导致的。或者是这个问题就是由于WPS恶意更改了office的Com组件注册权限。

修改hkey_classes_root\typelib{00020905-0000-0000-c000-000000000046}下把8.7的文件夹删掉。
在这里插入图片描述

或者搜索”{00020970-0000-0000-C000-000000000046}“将下面的文件删掉

提示错误信息“未将对象引用到对象实例”

解决方法:缺少插件
在这里插入图片描述

提示错误信息“检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 8000401a 因为配置标识不正确,系统无法开始服务器进程。请检查用户名和密码。”

这种错误很奇怪,因为是在服务器上安装的office2007,只要关闭了远程连接就提示这个错误
(如果没有发生这种错误,还是选择交互式用户)
解决办法:添加用户administrator,并填写密码
在这里插入图片描述

从 IClassFactory 为 CLSID 为 {00024500-0000-0000-C000-000000000046} 的 COM 组件创建实例失败,原因是出现以下错误: 8001010a解决办法

1、在命令行中输入:dcomcnfg,会显示出“组件服务”管理器

2、打开“组件服务->计算机->我的电脑->DCOM 配置”,找到“Microsoft Word文档”,单击右键,选择“属性”

3、在“属性”对话框中单击“标识”选项卡,选择“交互式用户””,关闭“组件服务”管理器。

修改好之后,重启服务器就可以了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值