gpt4 book ai didi

python doc 到 docx 转换,comtypes.Documents.Open 抛出 ValueError : NULL COM pointer access

转载 作者:可可西里 更新时间:2023-11-01 09:58:59 25 4
gpt4 key购买 nike

背景

我有一个应用程序,我想在其中将 .doc 转换为 .docx。之后处理 .docx 文件以进行数据挖掘。最终用户使用 Web 界面访问此服务。 Web 应用程序是在 Django 1.6 中开发的。

要将 .doc 转换为 .docx,我们需要安装了 MS Office 的 Windows 平台。话虽如此,我有一个正在运行的 AWS Windows Server 2012 R2 实例(它是 Windows 64 位)。我将 Apache(64 位)与 mod_wsgi 和 Python 2.7.8(64 位)一起使用。


现在,这是我将 .doc 转换为 .docx 的代码

import tempfile, sys
import comtypes, comtypes.client

def convert(source):
tmpfile = tempfile.NamedTemporaryFile(delete=False)
tmpname = tmpfile.name + ".docx"
tmpfile.close()
os.unlink(tmpfile.name)

try:
comtypes.CoInitialize();
wordapp = comtypes.client.CreateObject('Word.Application')
doc = wordapp.Documents.Open(source, ReadOnly=True)
doc.SaveAs(tmpname, FileFormat=16)
doc.Close()
wordapp.Quit()
except:
print sys.exc_info()

if os.path.exists(tmpname):
return tmpname
else:
return None

我得到的错误是

(<type 'exceptions.ValueError'>, ValueError('NULL COM pointer access',), <traceback object at 0x00000085CE65AC08>)

在线

doc = wordapp.Documents.Open(source, ReadOnly=True)

但有趣的是,这个错误只在我使用网络界面时发生。也就是说,如果我通过 Apache 并调用此代码。

我尝试过直接从命令行作为脚本运行这段代码,它工作得很好。

当转换作为 Django View 的一部分发生时,我收到此错误。

提前致谢。

问候,

普拉塔姆什

最佳答案

如果您仍然遇到这个问题,这就是帮助我实现完全相同的 AWS(Win2012)-Apache(64bit)-Django 布局的原因:

更改 DCOM 配置设置:

  1. 开始 -> dcomcnfg.exe
  2. 计算机 -> 我的电脑
  3. DCOM 配置
  4. 选择 Microsoft Word 97-2003 文档 -> 属性
  5. Tab Identity,从Launching User更改为Interactive User

关于python doc 到 docx 转换,comtypes.Documents.Open 抛出 ValueError : NULL COM pointer access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26991609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com