`
liuhanjun
  • 浏览: 47794 次
  • 性别: Icon_minigender_1
  • 来自: 海口
社区版块
存档分类
最新评论

改造fckeditor以支持word中图片复制粘贴的思考

    博客分类:
  • J2EE
阅读更多

    fckeditor就不用多说了,那是相当的强悍啊,就是貌似加载速度有点慢,一个页面有3个ToolbarSets["Default"]的textarea,就明显觉得好慢啊,虽然做了一定的裁减,把form相关的toolbar去掉了,还是慢,看哪位哥们有什么妙招可记得告诉我。不过我这里想说的不是fckeditor速度的问题,而是不能很好地支持word中图片、公式和绘图的复制粘贴,这个大家也知道,如果含有这些元素,粘贴进fckeditor就自动没了。ewebeditor就做得不错,自动上传word中的图片、公式和绘图这些,转化成img标签,东西是好,可惜要银子的哈,貌似还不便宜,咱做个单子也就几千,买这个授权花掉几千,没得挣咯(声明:本人绝对没有不尊重知识产权的意思,相反,本人极力反对“用软件不花钱”——盗版的社会陋习)。

    以下纯粹探讨性质,本人并不精通js:

1、首先要弄明白fckeditor粘贴了word中的文档后,代码是怎么样的。粗看了一下fckeditor源码,貌似word并非纯文本,所以复制以后进入到剪贴板,要用raw paste粘贴。

    word中的图片:

<v:imagedata o:title="aaa" src = 
  "file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image003.png"></v:imagedata>

 

利用正则找出所有的<v:imagedata>不是难事,但是要自动上传,本人原本准备隐藏一个form用input file来自动赋值,然后submit,但是由于security issue,input file的value是只读的,不可动态赋值,那叫一个郁闷啊,不过想想也是,要是js这事都可以干,那互联网就没人敢用了,太不安全了,重要的文件将很轻松地被不怀好意的程序员轻松获取,那叫一个恐怖啊!看来不采用activex控件是没有可能咯。

    word中的公式:

<v:imagedata o:title="" src = "file:///C:\DOCUME~1\ADMINI~\LOCALS~1\Temp\msohtml1\01\clip_image001.wmz">
</v:imagedata>

 跟图片没啥区别,就是压缩成wmz或者emz了,这对java来说,小菜一碟,用自带的GzipInputStream解压即可。

    word中的绘图:

<v:group> 。。。<v:shapetype.../> <v:shape.../> <v:rect.../> <v:oval.../> <v:line.../>。。。</v:group>

 

2、类似于这样的标签,显然不是w3的标准,需要加入

<html xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<meta name=ProgId content=Word.Document>
<meta name=Generator content="Microsoft Word 11">
<meta name=Originator content="Microsoft Word 11">
<link rel=File-List href="aaa.files/filelist.xml">
<link rel=Edit-Time-Data href="aaa.files/editdata.mso">
<link rel=OLE-Object-Data href="aaa.files/oledata.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->

 

类似的头部才行。

3、本着这个思路,先解决在fckeditor中粘贴word不能显示图片、公式等元素的问题。打开fck_paste.html文件,找到并修改

oDoc.write('<html><head><scr' + 'ipt>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;

 

			//加入IE显示公式和图片所必需的xmlns和style,否则不能显示
			oDoc.write('<html xmlns:v=\'urn:schemas-microsoft-com:vml\'' +  
					' xmlns:o=\'urn:schemas-microsoft-com:office:office\'' +
					' xmlns:w=\'urn:schemas-microsoft-com:office:word\'' +
					' xmlns=\'http:\/\/www.w3.org\/TR\/REC-html40\'>' +
					' <head>' +
					'<!--[if !mso]>' +
					'<style>' +
					'v\\:* {behavior:url(#default#VML);}' +
					'o\\:* {behavior:url(#default#VML);}' +
					'w\\:* {behavior:url(#default#VML);}' +
					'.shape {behavior:url(#default#VML);}' +
					'<\/style>' +
					'<![endif]-->' +
					'<scr' + 'ipt>window.onerror = function() { return true ; };<\/script><\/head><body><\/body><\/html>') ;

 

这样就解决了fckeditor粘贴窗口显示图片、公式、绘图等元素的问题。

 

总结:以上可以解决fckeditor的粘贴显示问题,但是上传到服务器以后,必须解决本地的那些图片、wmz之类的文件要自动上传到服务器,否则也是枉然,而要解决这样的问题,必须依靠第三方控件,目前本人正在测试用vc++写的activex控件,完成这个功能。水平有限,如有谬误之处,还望方家不吝赐教。

分享到:
评论
11 楼 lteb2002 2014-03-04  
今天才发现您的文章,我们对这个问题有共同思路,我们已经实现了,参考地址:
http://test.reremouse.com/wordimg/
10 楼 liuhanjun 2011-12-20  
鉴于有些博友要求提供ocx控件以作参考,现提供链接下载。http://www.0898tj.com/fckeditor/fckeditor.cab
9 楼 liuhanjun 2011-04-09  
zb7503 写道
liuhanjun 写道
zb7503 写道
能不能共享一下代码。想学习一下。谢谢!


代码共享是好主意,只是产权属于公司,被leader知道了,我就变鱿鱼了。


不知道applet能不能读取word中的图片,并进行上传。

沙箱机制的限制,恐怕是不可能的。
8 楼 liuhanjun 2011-04-09  
RobustTm 写道
能不能将步骤讲的清楚些,我把那段代码替换了还是不行,谢谢!

应该不会吧。当然,只修改fck_paste.html仅仅可以显示word中粘贴过来的图片公式等,而不能自动上传,要想自动上传到服务器,需要activex控件。为了方便,上传fck_paste.html,注意:中文注释下面的代码是额外添加的,酌情取舍。
7 楼 zb7503 2011-04-01  
liuhanjun 写道
zb7503 写道
能不能共享一下代码。想学习一下。谢谢!


代码共享是好主意,只是产权属于公司,被leader知道了,我就变鱿鱼了。


不知道applet能不能读取word中的图片,并进行上传。
6 楼 RobustTm 2011-03-31  
能不能将步骤讲的清楚些,我把那段代码替换了还是不行,谢谢!
5 楼 liuhanjun 2011-03-17  
zb7503 写道
能不能共享一下代码。想学习一下。谢谢!


代码共享是好主意,只是产权属于公司,被leader知道了,我就变鱿鱼了。
4 楼 liuhanjun 2011-03-17  
cuixiping 写道
to liuhanjun:

ocx控件的签名证书问题,只要加一段代码就可以了,许多年前我用vb写ocx的时候做过,这个你可以网上查。

谢谢提醒,但是现在的IE8和IE9对安全原来越重视了,不签名的ocx控件,不是加代码就可以蒙混的,今时不同往昔啊。
3 楼 zb7503 2011-02-16  
能不能共享一下代码。想学习一下。谢谢!
2 楼 cuixiping 2011-02-16  
to liuhanjun:

ocx控件的签名证书问题,只要加一段代码就可以了,许多年前我用vb写ocx的时候做过,这个你可以网上查。
1 楼 liuhanjun 2011-02-13  
    过年期间,啥也没干,这两天再捡起fckeditor控件的问题,终于解决了从word复制粘贴自动上传图片、公式、绘图的问题。正如前所说,图片和公式相对好处理,word绘图产生的图片就比较麻烦,因为没有生成本地图片文件,只好用vc++按CF_HTML读取剪切板的内容,这里可以看到绘图生成了图片文件。这里有点迷糊:IE的粘贴和VC的CF_HTML读取竟然不一样,why?算了,懒得管了。去掉乱七八糟的html代码后返回给fckeditor,然后fckeditor再调用vc++控件进行上传,走曲线了,按理说可以由VC完成读取、正则解析、上传、正则替换,最后回传给fckeditor,这样应该好些。没办法,不熟悉ATLRX正则表达式,也不想去下载正则库,以免控件过大,就这样吧。
    ocx控件是做好了,郁闷的是没有签名证书,IE拒绝安装自动下载安装cab,吐血!没办法,做个exe让用户手动下载安装了。但是N不爽啊,一冲动想去wosign买个签名证书,1年的要1388元人民币整,思来想去,囊中羞涩,拉倒了!先留钱买饭吃,以后再说罢。
    有这方面需求和兴趣的XDJM,可以留言一起探讨。好了,睡觉去先~~~

相关推荐

    Fckeditor实现远程存图Word存图

    主要用AjaxPro将Fckeditor编辑器中的HTML代码发送到后台用Regex查找图片用WebClient下载图片,替换图片链接,回发信息,替换Fckeditor编辑器中的代码来实现将复制到编辑器中的图片下载到本地文件夹中。

    FCKeditor Word控件 JSP编辑控件 word

    - **丰富的文本格式化选项**:用户可以调整字体、大小、颜色,设置对齐方式,加粗、斜体、下划线等,如同在Word中一样操作。 - **图片和媒体管理**:支持上传图片、嵌入视频和其他多媒体内容,提供方便的媒体管理...

    Fckeditor添加导入Word文档功能(已测试通过)

    默认的Fckeditor具有从ms word粘贴的功能, 但是当你的word文档中包含图片的时候, 就会出现无法显示图片的错误, 在这里我们要实现直接导入word文档,如果其中包含图片,则自动分离图片并上传到服务器后在fckeditor中...

    fckeditor 精简word拷贝代码插件

    【fckeditor 精简word拷贝代码插件】是一个专为fckeditor设计的扩展工具,主要用于优化用户从Microsoft Word中复制文本到fckeditor时的体验。在日常工作中,人们经常需要将Word文档中的内容粘贴到网页编辑器中,但...

    FCKeditor 插件 远程保存图片

    然而,一个常见的问题是在使用FCKeditor时,如果用户复制并粘贴了包含外部图片的网页内容,这些图片通常会引用原始源站的URL,而不是保存在本地服务器上。这可能导致图片加载速度慢、版权问题或者在源站图片被删除后...

    Fckeditor 2.6.4的详细配置,解决了中文文件夹,中文图片的问题

    Fckeditor 是一款开源的富文本编辑器,它允许用户在网页上直接编辑文本内容,类似于Word的功能。2.6.4 版本是其历史版本之一,它在处理中文文件夹和图片时可能会遇到一些问题。以下是对 Fckeditor 2.6.4 的详细配置...

    fckeditor 批量图片上传

    用户在FCKeditor界面中选择图片文件后,FCKeditor会调用其内置的图片上传插件,这个插件会处理用户选择的多个文件,将它们打包成一个Multipart请求,然后使用AJAX发送到服务器。上传过程中,FCKeditor还会显示上传...

    支持中文的FCKEditor

    支持中文的FCKEditor,可以支持中文正确显示。重新编译过,通过了测试。

    fckeditor集成远程图片上传插件

    然而,原始的FCKeditor并不直接支持远程图片的上传,这意味着用户如果想在编辑器中插入图片,通常需要先将图片上传至服务器,然后手动输入图片的URL。这对于用户来说,无疑增加了操作的复杂性。 为了解决这个问题,...

    FCKeditor控件示例 上传文本,图片,原格式

    FCKeditor的一大优势是它可以保留HTML原始格式,这意味着从其他地方复制粘贴的文本(带有样式和布局)可以被完整地保留下来。这在处理来自不同来源的内容时非常有用,避免了格式丢失的问题。 5. **扩展与自定义** ...

    FCKeditor 2.6 图片预览

    FCKeditor 2.6 浏览服务器 图片预览 FCKeditor 2.6 浏览服务器 图片预览 FCKeditor 2.6 浏览服务器 图片预览 FCKeditor 2.6 浏览服务器 图片预览 FCKeditor 2.6 浏览服务器 图片预览

    fckeditor 2.5.1(带远程图片保存)

    在这个版本中,FCKeditor集成了远程图片保存功能,允许用户上传并保存图片到服务器,而不仅仅限于在本地计算机上的资源。 在ASP.NET中集成FCKeditor 2.5.1,开发者可以利用C#和.NET框架的强大功能,创建一个交互性...

    fckeditor+swfupload+图片本地化

    在fckeditor和swfupload的结合使用中,用户可以通过swfupload上传图片到服务器,然后在fckeditor中直接插入这些本地化的图片,实现编辑器内的一站式操作。 【文件列表详解】: 1. **fckconfig.js**:这是fckeditor...

    jsp版fckeditor 工程源代码(可上传图片)

    此工程源代码的亮点在于它支持图片上传功能,这意味着用户可以通过FCKeditor在网页内容中插入并上传本地图片。 "集成了fckeditor,并且可上传图片的jsp应用" 描述进一步确认了FCKeditor的集成,并强调了图片上传...

    fckeditor解决中文问题

    同时,服务器端应配置支持URL解码,以正确识别这些路径。 最后,当涉及到“中文名称的图片无法显示”时,问题可能出在图片路径的处理上。检查FCKeditor的图片管理器配置,确保其能够正确处理中文路径。如果使用的是...

    在线编辑器fckeditor,有配置浏览图片说明,本人在项目中使用效果很好!

    在线编辑器FCKeditor是一款广泛应用于网页开发中的富文本编辑工具,它允许用户在网页上进行类似Word的文本编辑操作,如插入图片、链接、格式化文本等。这款编辑器以其丰富的功能、易于配置和良好的兼容性而备受青睐...

    FCKeditor在java web程序中的使用介绍

    FCKeditor的特性包括支持粘贴Word格式的文档,上传并处理图片,调整文字和图像的格式,以及实时预览功能。值得注意的是,FCKeditor不仅免费,还支持多国语言,对于中文的支持尤为出色。 要将FCKeditor集成到Java ...

    fckeditor集成远程图片上传插件 v3.0.rar

    在互联网内容创作中,编辑器扮演着至关重要的角色,而FCKeditor是一款广受欢迎的开源富文本编辑器,它为用户提供了类似Microsoft Word的在线编辑体验。本文将详细介绍"Fckeditor集成远程图片上传插件v3.0"这一功能,...

    JSP使用FCKeditor(带上传图片)实例.rar

    FCKeditor则是一款强大的富文本编辑器,它允许用户在网页上进行类似Word的文本编辑,包括插入图片、链接等操作。FCKeditor在JSP中的应用,极大地提升了用户体验,使得内容创建和编辑更加直观便捷。 **FCKeditor介绍...

Global site tag (gtag.js) - Google Analytics