2013-02-20 57 views
2

我正在尝试查找api或php技术,它可以读取docx文档,删除一些MS内容控制值,然后重新创建相同的docx文档,同时保留所有MSWord内容和样式元素。PHP中的内容控制

您可能想知道这可能是有用的。例如,你可以在的MSWord设定一个问题,像这样:观察中的MSWord在处理文件时

The sky is blue in colour. 

接着,在另一端,一个用户只能看到:

The Sky is  in colour. 

一方面,您可以将内容控制元素中的数据“蓝色”提取到您的数据库中。另一方面,您可以让其他最终用户查看MSWord中的处理文件,而不会透露“答案”为蓝色。多么酷啊。

的想法我心目中一般像这样:

1.打开的MSWord创建的docx文件(2007年的MSWord和更高版本)。该文件包含连同自定义内容控制元素一些常用的MSWord文字和造型元素(即您在开发者的MSWord/Visual Studio中创建),看起来像(伪):

... some standard MS styles or runs ...
... <SdtRun> The sky is </SdtRun>
<Sdt Content Control attribute: colour>
<Sdt Content Control value> blue** </Sdt Content Control value>
</Sdt Content Control attribute>
<SdtRun> in colour.></SdtRun>
...

2.内容控制元件内部取出,同时保持该值包含空格。

3.生成一个没有指定的内容控制元素值的新的MSword文档。所有常用的MSWord文本和样式元素都被保留。或者,新生成的docx可以在没有原始内容控制标记和空格保留为静态文本格式的情况下执行。

4.做到以上而无需申请内容控制结合技术(有些情况下你宁愿不绑定内容的控制元件的情况,但那是另一话题全部由自己)

面临的挑战是创建一个新的MSWord docx,并保留所有标准的MSWord内容(文本,样式等),而不使用任何预定义的模板。我环顾了很多apis,但似乎无法找到任何可以读取和写入MSWord docx文档。我只能识别一些可以写入预制模板的文件(例如phpdocx)。

我甚至不确定上述方法是否合适,但其要点是真的要从docx文档中删除内容控制值而不破坏原始文档的内容,样式和布局。我想这个解决方案可能涉及到
(i)目标文件。XML本身虽然XML API或
(二)针对当地docx虽然DOCX API或
(III),你可能想分享任何其他技术。

有没有谁可以分享一些指针,任何一个?

=======于13年2月23日========

我想和大家分享多一点,从而给上下文原来的问题补充细节。我试图实现的要点是为人们通过可编辑的MSWord模板将数据上传到数据库创建一种方法。

这样的使用的一个例子可能是市场研究公司希望在MSword中即时创建在线调查表单,上传这些表单,并立即在线发布这些调查表单,所有这些只需通过上传MSWord Doc一个网页。在docx本身中,有些人可能希望灵活地复制和粘贴跨同一表单的数据字段占位符(即内容控制标记),而不受固定长度模板的显着限制。

数据绑定本来理想的固定长度的固定布局的情形。然而,在这种情况下,最终用户将无法轻松地编辑模板,因为复制正粘贴数据绑定的标签也意味着跨越第N复制并粘贴标签重复相同的值(MSWORD自动完成这一点)。我尝试了另一种方法,我直接从document.xml而不是从customXml解析值,并且能够从document.xml中提取sdt节点,并通过简单地将含义分配给特定的内容控制标记并通过节点标识来重建所需的数据结构属性。

我甚至能够通过“blip”节点解析图像,但我还没有找到从custom.XML这样做的方法。在这种情况下,用户可以无限制地复制内容控制标记(包括图像标记),并仍能够从这些标记中捕获值。

最后,有些人可能希望得到他们所上传的原始的docx,剥离一定的“默认”内容控制值的返回的“公版”的能力。因此,上述问题被提出。我将深入研究phpWord等各种apis。同时,我希望能听到更多的消息。

+0

所以看看PHP的COM扩展 - http://www.php.net/manual/en/book.com.php – 2013-02-20 15:36:14

+0

难道你不能只是把文本透明而不是删除它? – 2013-02-20 15:39:17

+0

为什么限制#4?如果你使用内容控制数据绑定,你想要做什么是微不足道的。 – JasonPlutext 2013-02-21 20:29:42

回答

2

好吧,你似乎没有足够的搜索 你可以使用phpWord这是一个库,可以读取和写入word文件。 你可以遍历它的例子并且遵循它们。 你问的是非常简单的。

+1

注意阅读是极其有限的,直到我有机会做就可以了 – 2013-02-20 21:36:42

+0

一些严肃的工作,谢谢您的答复。 @标记。我在原始问题中添加了更多细节。保持它来。 – 2013-02-22 22:03:50

+0

在重复的数据绑定内容控件上,似乎Office 2013与2007版本没有太大差别。即如果控制标记被重复或复制并粘贴,则Office也将在粘贴的控制标记中自动生成相同的内容。我还没有在实际的2013年办公室中进行验证,并希望听到任何有不同经历的人。 – 2013-03-01 15:27:33