powerpoint - 尝试使用从 Windows 服务的 VBA 调用的 PowerPoint 时出错
问题描述
我有一个在 Apache for Windows(作为 Windows 服务运行)上运行的 Web 服务器,它使用 Flask 和 Python win32api 库通过 Interop 库与 PowerPoint 进行交互。当我在与 Flask 捆绑的开发服务器上运行该站点时,一切都很好。程序打开,我可以将演示文稿转换为视频。
当我尝试从作为服务运行的 Web 服务器执行相同的操作时,我从图层中收到Not enough memory resources are available to complete this operation
错误消息。COM
我正在推送(物理)服务器的资源,并且我的 RAM 在 PowerPoint 打开之前使用了大约 80%,但我既可以自己打开它,也可以如前所述通过开发 Web 服务器运行它,它工作得很好。
我正在使用线程,如果重要的话,PowerPoint 正在从单体应用程序的新线程中打开。
PS 我知道微软不会宽恕这种 PowerPoint 应用程序,但可惜他们没有提供不使用 PowerPoint 将 PowerPoint 转换为视频的方法!
解决方案
Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定的行为和/或在此环境中运行 Office 时出现死锁。
如果您正在构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。
在Office 服务器端自动化的注意事项文章中阅读有关此内容的更多信息。
您可以考虑使用为服务器端执行而设计的任何第三方组件。此外,请查看 Open XML SDK,请参阅Welcome to the Open XML SDK 2.5 for Office。
推荐阅读
- kubernetes - 使用rabbitmq的队列做hpa,访问custom.metrics失败
- android - 在Android中如何与字节数组进行数据绑定?
- java - 使用 java 使用 Twilio API 进行电话验证
- angular - Angular:ng serve 给出“代码 ELIFECYCLE”错误
- java - spring boot 执行两个依赖方法
- ocaml - 使用两个参数化模块时的 OCaml 类型检查问题
- paypal - PayPal 智能支付按钮:仅显示一种支付方式
- javascript - SyntaxError: Unexpected identifier while Parsin XML Data Using Google App Script
- c++ - MATLAB 到 C++:编码器:不一致的数组维度连接
- java - 如何解决 Activity Not Found 异常