Php 使用COM将word文件的单个页面保存为单独的文档

Php 使用COM将word文件的单个页面保存为单独的文档,php,com,ms-word,Php,Com,Ms Word,最近我一直在使用MicrosoftCOM对象类来管理word文件。到目前为止还不错,因为我已经能够使它工作并进行一些文件转换,例如在服务器上将整个文档保存为PDF 现在我面临一个问题:由于我将在运行时大量转换和操作给定的word文件,我认为如果我可以单独保存每个页面并逐个处理它们,而不是每次都重新处理整个文档,那会更好 我一直在阅读所有的文档,我觉得我不能只保存文档的一页,除非我用这个方法做一些魔术,但显然没有办法知道每一页的“当前结束位置”。有什么想法吗 tl;dr我试图通过PHP脚本使用'w

最近我一直在使用MicrosoftCOM对象类来管理word文件。到目前为止还不错,因为我已经能够使它工作并进行一些文件转换,例如在服务器上将整个文档保存为PDF

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

我一直在阅读所有的文档,我觉得我不能只保存文档的一页,除非我用这个方法做一些魔术,但显然没有办法知道每一页的“当前结束位置”。有什么想法吗


tl;dr我试图通过PHP脚本使用'word.application'COM对象在word文档中保存单个页面,但我找不到document.Range方法的示例。

Francesco,我必须警告您@SLaks是正确的,因为您确实无法在服务器上使用Word自动化。不,真的。我们是认真的

原因有两个:

首先,Word是一个非常复杂的软件,设计用于交互用户。它没有被编程或测试为在服务器环境下使用,并且在非交互式帐户下运行时不能正常工作(服务的方式)。它迟早会崩溃或冻结。我看到了。我说的不一定是虫子。Word会做一些事情,需要一个完整的用户帐户;或者Word希望有人点击消息框。这是无法逃避的

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

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

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

是的,大多数时候分页符不会移动(很多),特别是如果你有一个文档是一堆不太完整的表单,但我并不想挑剔:关键是,Word文档对象模型不会对你操作“页面”有很大帮助,因为它们不是一流的公民,而是附带的格式

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

您可以使用
ActiveDocument.Sections
集合查找您的。。。啊哼…'pages'(实际上,
部分
对象),然后使用
范围
方法(提取
范围
对象)和
导出固定格式
方法将该范围导出为PDF


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

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

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