CKEDITOR无缝粘贴word

摘要:
由于工作需要必须将word文档内容粘贴到编辑器中使用但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解决这一问题发现不管什么编辑器只要将图片转换成base64后就可以直接使用(IE8及一下可能不支持),由于编

由于工作需要必须将word文档内容粘贴到编辑器中使用

但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题

考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解决这一问题

发现不管什么编辑器只要将图片转换成base64后就可以直接使用(IE8及一下可能不支持),由于编辑器中添加word文档功能也只是自己用,因此可以忽略这种浏览器了

找了很久,试用了很多编辑器,发现只有ckeditor的功能还算符合我的需求(支持自定义HTML属性)

然后我写了一个监听粘贴事件的操作,用来获取粘贴之后的file:///xxxx.jpg这种路径

<script>

varservice = {

http: require('http'),

url: require('url'),

querystring : require('querystring'),

fs: require('fs'),

config: {

timeout : 60000,

charset :'utf8',

port: 10101,

host:'127.0.0.1'

},

router : {

index :function(res, query){

res.end('Server is running!');

},

check :function(res, query){

varresult = {status: 1, info:'success'};

result = JSON.stringify(result);

if(typeofquery.callback =='string'){

result = query.callback +'('+ result +')';

}

res.end(result);

},

word :function(res, query){

var_this = service;

varresult = {status: 0, info:'error'};

if(typeofquery.file =='string'){

varimg = query.file.match(/file://+(localhost)?(S+.(png|jpg|jpeg|gif|bmp))/i);

console.log(img);

if(img){

varbase64 = _this.base64_encode(img[2]);

result.status = 1;

result.info ='data:image/'+ img[3] +';base64,'+ base64;

}

}

result = JSON.stringify(result);

if(typeofquery.callback =='string'){

result = query.callback +'('+ result +')';

}

res.end(result);

}

},

start :function(){

var_this=this;

varServer = _this.http.createServer(function(req, res) {

varURL = _this.url.parse(req.url);

varreceive = [];

varrouter =null;

switch(URL.pathname){

case'/word':

router = _this.router.word;

break;

case'/check':

router = _this.router.check;

break;

default:

router = _this.router.index;

}

req.setEncoding(_this.config.charset);

req.addListener('data',function(data) {

receive.push(data);

});

res.writeHead(200, {'Content-Type':'text/plain'});

res.on("close",function(){

console.log("res closed");

});

req.on("close",function(){

console.log("req closed");

});

req.addListener('end',function() {

router(res, _this.querystring.parse(URL.query));

});

});

Server.listen(_this.config.port, _this.config.host, 1024);

Server.setTimeout(_this.config.timeout,function(cli){

cli.end('timeout ');

});

console.log('Server running at http://'+ _this.config.host +':'+ _this.config.port);

},

//base64

base64_encode :function(file){

varbitmap =this.fs.readFileSync(file);

returnnewBuffer(bitmap).toString('base64');

}

};

service.start();

</script>

将以上代码保存为一个word.js文件

然后执行 node word.js就会自动创建一个http服务了

这个时候我们在编辑器中使用jsonp获取到处理完的图片数据替换原来的file:///xxxxxx.jpg路径就搞定了

处理word图片批量上传的代码

CKEDITOR无缝粘贴word第1张

其它的业务逻辑参数代码

CKEDITOR无缝粘贴word第2张

当然也可以将以上代码打包成一个本地执行文件去给不懂电脑的人使用就行了(具体方法我这里就不说了)

前台引用的代码

CKEDITOR无缝粘贴word第3张

下面是实现后的效果,能够自动上传Word中的所有图片,并且有进度条显示

CKEDITOR无缝粘贴word第4张

所有图片都能够保存在服务器中,而且支持分布式图片存储

CKEDITOR无缝粘贴word第5张

编辑器中的图片地址已经全部替换成了服务器的图片地址,其它的用户也能够正常访问

CKEDITOR无缝粘贴word第6张

详细内容可以参考这篇文章:

http://blog.ncmem.com/wordpress/2019/10/18/ckeditor%e6%97%a0%e7%bc%9d%e7%b2%98%e8%b4%b4word/

免责声明:文章转载自《CKEDITOR无缝粘贴word》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jQuery动画效果Asp.net core 学习笔记 Image processing (ImageSharp)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

javascript 使用数据加密跟base64 编码

下面的js代码首先将给定的数据字符串,跟指定的密匙字符串做异或运算,接着将结果序列进行base64编码,下面同时给出了解密算法跟,base64还原函数 代码如下: function secode(opArray) {var _local2 = opArray;var strEnd="=";var _local3 = "ABCDEFGHIJKLMNOPQR...

(转)NIOS II IDE 9.1(Nios II Software Build Tools for Eclipse) 新特性

Nios II嵌入式设计包(Embedded Design Suite, EDS)Nios II嵌入式设计包集成了一系列的尖端的软件工具、实用工具、库文件以及驱动程序,这些可以帮助你将产品快速地推向市场。新的Nios II嵌入式设计包提供了以下软件开发工具:1. 为Eclipse提供的Nios II软件构建工具(Nios II Software Buil...

用GO语言开发editplus编辑器插件(附源码)

我要开发的插件功能极为简单,就是对用户选中的内容进行base64编码或解密工作. 其中所涉及的技术部分主要是GO语言程序开发和editplus插件配置的部分,首先我们来看一下GO语言代码的写法,如下: package mainimport ("encoding/base64""fmt""os")const (version string = "1.0")f...

android 用webView作为编辑器 各种问题

1.首先我要说明一下为什么要写这个博客,因为公司最近需要一个自定义的编辑器,苦于没有思路在网上找了好久,看到了好多android实现的编辑器(其实也就那么几个并不多),公司需求和网页端同步共享创建的文档,需要用到html保存数据,然后我就被迫开始了编辑器之旅,这东西我觉得最大的难点就是要手机和网页端保持一致,手机并没有那么自由统一起来还是非常困难的,接下来...

php实现jwt

一:JWT是什么 JWT是json web token缩写。它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证。基于token的身份验证可以替代传统的cookie+session身份验证方法。 JWT由三个部分组成:header.payload.signature 二:代码实现...

国内技术帝不输国外 CryEngine 3引擎下 混血编辑器 诠释究极画质

有一款游戏,它用真实且精美的画质征服了无数的玩家,在06年E3展上,它绽放了耀眼的光彩,拿下了当年几乎所有画面上的奖项。大家应该已经猜到了,它就是《孤岛危机》。 在《孤岛危机》发售后几年里,制作商Crytek发布了一部又一部介绍他们引擎的强悍的短片,使得玩家对续作充满了期待。 2011年3月,游戏将正式发售,被各种震撼宣传片以及奔着音乐制作人的玩家终于可...