【问题标题】:Saving single pages of a word file as separate documents using COM使用 COM 将 word 文件的单页保存为单独的文档
【发布时间】:2015-02-25 08:38:37
【问题描述】:

最近我一直在使用 Microsoft COM 对象类来处理 PHP 文件。到目前为止一切顺利,因为我已经能够使其工作并进行一些文件转换,例如将整个 DOC 保存为服务器上的 PDF。

现在我面临一个问题:由于我将在运行时大量转换和操作给定的 word 文件,我认为如果我可以单独保存每个页面并处理它们会更好一个,而不是每次都重新处理整个文档。

我一直在阅读所有的MSDN part about the COM Document Class,并且我觉得我无法只保存文档的一页,除非我使用Range 方法做某种魔术,但显然有 -no方式 - 知道每个页面的“当前结束位置”。有什么想法吗?

tl;dr 我正在尝试通过 PHP 脚本使用“word.application”COM 对象将单个页面保存在 word 文档中,但我找不到该文档的示例。范围法。

【问题讨论】:

  • 不要在服务器上使用 Word Automation。

标签: php com ms-word


【解决方案1】:

弗朗西斯科,我得警告你。 @SLaks 是正确的,因为您真的不能在服务器上使用 Word Automation。不完全是。我们是认真的。

有两个原因:

首先,Word 是一款非常复杂的软件,旨在供交互式用户使用。它没有经过编程或测试以在服务器环境下使用,并且在非交互式帐户下运行时无法正常工作(服务的方式)。迟早它会崩溃或冻结。我已经看到了它。我不一定在谈论错误。 Word 会做一些需要完整用户帐户的事情;或者 Word 期望有人点击消息框的地方。逃不掉的。

第二,因为即使你设法让它做你想做的事,但事实证明 Office 许可证明确禁止你以这种方式运行 Word。

现在,仅从自动化的角度来看:

Word 并不真正操纵“页面”。 “页面”只是当前选择的任何打印机的附带副作用。将相同的文件带到具有不同打印机和/或驱动程序的不同计算机上,并且分页可能会改变。在大型文档上,它发生变化。

是的,大多数情况下分页符不会移动(很多),特别是如果您的文档是一堆不完整的页面表单,但我不想这样做请注意:重点是,Word 文档对象模型对您操作“页面”没有多大帮助,因为它们不是一等公民,而是附带的格式。

我想你最好的办法是在页面之间使用分节符,而不是让页面自动流动;这样你就有了对象模型可以抓取的东西。

您可以使用ActiveDocument.Sections 集合来定位您的...咳咳...“页面”(真的是section 对象),然后使用Range 方法(提取Range 对象)和 ExportAsFixedFormat 方法将该范围导出为 PDF。

如果您想要一个 Word 文档,我认为对象模型不允许您将文档的一部分保存为单独的文档。但是,您可以轻松地将范围复制并粘贴到新文档中并保存。

【讨论】:

    【解决方案2】:

    我在 VB.net 中编写了一些代码,将传递的 word 文档拆分为单独的页面。然后它继续将页面保存为 JPG 图像,所以我认为这就是你想要的。 如果您还没有完成任务,我很乐意与您分享代码?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多