我感兴趣的是,当数据放在剪贴板中时,数据采用哪种格式。这是因为我需要开发一种WYSIWYG编辑器,它接受从MS Word粘贴的数据,如果可能的话,我想保留原始的格式。这包括表格和要点。微软有关于这方面的文档吗?
我在PHP上编程,顺便说一句。
发布于 2011-11-03 13:04:34
如果你正在编写一个WYSIWYG编辑器,那么这将(几乎肯定)是在Javascript中完成的,而且你不必担心Microsoft Word中格式化的文本在粘贴之前是如何表示的,因为你无论如何都无法访问它。
但是,您需要担心一旦用户按下paste,它在HTML中是如何表示的,浏览器会请求并处理此内容,并将结果作为HTML节点粘贴到ContentEditable/DesignMode元素中。
在很大程度上,它在HTML中的格式设置方式取决于它在Word中的格式设置方式。正如我们所知,在Word中很容易成为非语义性的,通过使用字体大小下拉而不是改变段落样式,通过使用项目符号字符而不是实际的项目符号或编号列表,等等。如果你依赖于项目符号列表成为正确的HTML无序列表,你将需要希望在Word中添加它们的人使用列表函数添加它们,否则您将有额外的复杂处理。
最终结果也可能受到用户使用的浏览器、是否处于怪癖模式以及他们使用的Word版本的影响。此外,在OpenOffice中打开的同一文档将以不同的方式粘贴到浏览器中。你需要在服务器端使用一个通用的HTML过滤器和杀菌器。
此外,您可能希望从生成的HTML中至少过滤出以下内容(除非您有兴趣保留用户添加的任何自定义样式,而不管其是否适合web):
style=
属性、<style>
元素等。发布于 2011-11-03 13:02:14
来自MSDN > Desktop > Learn > Reference > Windows Application UI Development > Data Exchange > Clipboard > Clipboard Overviews > Clipboard Formats emphasis mine
许多应用程序使用的数据无法在不丢失信息的情况下转换为标准剪贴板格式。这些应用程序可以创建自己的剪贴板格式。由应用程序定义的剪贴板格式称为注册剪贴板格式。例如,如果文字处理应用程序使用标准文本格式将带格式的文本复制到剪贴板,则格式信息将丢失。解决方案是注册一个新的剪贴板格式,比如富文本格式(RTF)。
在那个页面上有更多的细节。
发布于 2011-11-04 18:24:57
将有十几种格式可供选择。文本、RTF、HTML和OLE是主要的格式。还有一些愚蠢的格式,比如使用延迟渲染的动态渲染的位图。
https://stackoverflow.com/questions/7990428
复制相似问题