你调用的对象是空的。没有转换

时间:2014-07-21 08:08:34

标签: pdf-generation ms-office backticks

我有一个托管在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但没有运气的许可

我们也遇到过类似问题,但未在此论坛中回答

任何指针都非常赞赏

2 个答案:

答案 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的配置中指定的用户身份运行计划的任务或服务,这对我来说很成功。