我有一个托管在Windows 7上的perl程序,该程序由托管在linux环境中的发布框架调用。
此发布框架具有基于Java的接口,该接口在Windows上调用已配置的脚本(调用外部officetoPDF的perl程序)以执行命令行转换。
输入文件(MS Office文件)通过FTP(IIS)复制到Windows中 OfficeToPDF.exe转换为PDF。
在Windows命令行本地执行时,文件转换为PDF格式正常。
当通过发布框架调用时,officetopdf返回以下消息
对象引用未设置为对象的实例。没有转换
我在perl程序中有另外一个外部程序调用非办公室ASCII文件到二进制文件转换,这对于发布框架调用非常好。
我已经检查了用户权限,在转换和路径之前对ms-office文件执行权限,仍然无法解决此问题。
我还尝试了related workaround但没有运气的许可
我们也遇到过类似问题,但未在此论坛中回答
任何指针都非常赞赏
答案 0 :(得分:0)
您需要设置ms字才能以特定用户身份执行。 为此,请使用DCOMCNFG工具:开始>运行DCOMCNFG
然后展开: 控制台根>组件服务>计算机>我的计算机> DCOM COnfig> Microsoft Office Word 97-2003文档
右键单击,然后单击属性 然后身份标签 并选择:此用户。并将其设置为管理员用户。
在尝试了许多其他选择之后,这对我有用。
在我的情况下,我不是使用perl,而是使用计划的任务来运行bat文件,启动一个批处理以使用OfficetoPDF将doc *文件转换为pdf。 (https://github.com/cognidox/OfficeToPDF)很棒的工具
将计划任务设置为以特定用户(在我的情况下为admin用户)运行不足以解决该问题,并且计划任务因winword.exe停留在99%cpu上而挂起。但是直接运行bat文件即可。
答案 1 :(得分:0)
只需确认user681365的回答即可。按照dcomcnfg的建议进行操作,并按照dcomcnfg的配置中指定的用户身份运行计划的任务或服务,这对我来说很成功。