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

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

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

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

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

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

<script>

var service = {

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){

var result = {status: 1, info: 'success'};

result = JSON.stringify(result);

if(typeof query.callback == 'string'){

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

}

res.end(result);

},

word : function(res, query){

var _this = service;

var result = {status: 0, info: 'error'};

if(typeof query.file == 'string'){

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

console.log(img);

if(img){

var base64 = _this.base64_encode(img[2]);

result.status = 1;

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

}

}

result = JSON.stringify(result);

if(typeof query.callback == 'string'){

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

}

res.end(result);

}

},

start : function(){

var _this  = this;

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

var URL = _this.url.parse(req.url);

var receive = [];

var router = 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\n');

});

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

},

//base64

base64_encode : function(file){

var bitmap = this.fs.readFileSync(file);

return new Buffer(bitmap).toString('base64');

}

};

service.start();

</script>

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

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

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

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

其它的业务逻辑参数代码

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

前台引用的代码

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

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

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

详细内容可以参考这篇文章:ckeditor粘贴word – 泽优软件博客

讨论群:223813913

怎么实现将word中的公式导入(或粘贴)到网页编辑中相关推荐

  1. 在word中利用Endnote导入文献时提示“无法编辑range”的解决办法-基本上通过以下方法都可以解决

    在word中利用Endnote导入文献时提示"无法编辑range"的解决办法 注意:在处理这个问题之前,请复制word以备份我们要处理的word文件,否则后期如果我们调整了word ...

  2. 【唠叨两句】如何将一张树型结构的Excel表格中的数据导入到多张数据库表中...

    小弟昨天遇到一个相对比较棘手的问题,就像标题说的那样.如何将一张树型结构的Excel表格中的数据导入到多张数据库表中,在现实中实际是七张数据库表,这七张表之间有着有着相对比较复杂的主外键关系,对于我这 ...

  3. 文献中的公式如何弄到mathtype或者matlab中

    文献中的公式如何弄到mathtype或者matlab中 步骤 步骤 1.需先将截图的公式转换成mathml或者latex 1.1进入LaTeX公式编辑网站,点击[图片识别],将公式图片直接添加到框里, ...

  4. 计算机在网站设计中的应用,图形设计在计算机网页设计中的应用研究.doc

    图形设计在计算机网页设计中的应用研究 摘 要:计算机网页设计作为交叉性学科,既涉及计算机科学技术,还涵盖图形艺术等内容,即优秀的网页设计者应同时具备上述两项能力.同时,图形设计以核心角色,在计算机网页 ...

  5. 怎么实现将word中的公式导入(或粘贴)到在线编辑中

    Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无 ...

  6. 百度ueditor 拖文件或world 里面复制粘贴图片到编辑中 上传到第三方问题

    我这边从world 里面复制粘贴图片到编辑器中,它自动给我上传了,但是我是用的第三方的要设置一个token值,我找了很久,也没有找到应该在哪里设置这个上传的参数,如果是点击图片上传,我知道在dialo ...

  7. 在嵌入在html中的pdf电子签章,一种网页PDF中电子签章定位方法与流程

    本发明属于一种电子签章技术领域,具体涉及一种网页PDF中电子签章定位方法. 背景技术: 国密电子签章中的套章方法操作复杂,无法对电子文档中一次性加盖多个印章的,大大降低了盖章效率,尤其是无法在所有需要 ...

  8. 怎么实现将word中的公式导入(或粘贴)到编辑中wangEditor

    这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用 后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下) ...

  9. 怎样将Excel中的数据导入到SQL Server 2000数据库中

    1.打开企业管理器,打开要导入数据的数据库,在表上按右键,所有任务-->导入数据,弹出DTS导入/导出向导,按 下一步 , 2.选择数据源 Microsoft Excel 97-2000,文件名 ...

最新文章

  1. 微生物所高程-郭良栋组(内附招聘)在菌根适应策略研究中取得进展
  2. NLP模型超越人类水平?你可能碰到了大忽悠
  3. vs2005格式化代码
  4. 分享Kali Linux 2016.2第48周镜像文件
  5. C# winform WebBrowser怎么获取js中的变量的值?怎么触发js的事件?
  6. 【css】行高的计算
  7. 万能makefile深入浅出 - 第四篇
  8. php头尾分离,laravel怎么做模板的头尾分离
  9. 获取当前scn号scn1_Checkpoint和SCN的解析
  10. php中如果想要打印出来的结果换行怎么操作_现在,就要对文件的批操作,动刀子啦!!!...
  11. 重要且紧急:总以为这是最后一个短板,新的短板又出现了
  12. Atititv2需求文档模板大纲目录 attilax总结
  13. matlab 表示希腊字母yita,数学罗马符号_常用数学的罗马符号和拉丁符号有什么哪些_淘题吧...
  14. 电路知识--认识原理图(一)
  15. 计算机主机发出滴滴声音怎么办,电脑蓝屏后主机滴滴的响应该怎么处理教程
  16. PEG 动态选股策略
  17. 《Java程序小作业之自动贩卖机》#谭子
  18. DOM JDOM DOM4J
  19. 【java校招你不知道的那些事儿】java校招不仅仅是春招秋招,具体有哪些阶段,特点是什么
  20. 重庆大学 计算机组成原理,计算机组成原理课程设计报告重庆大学

热门文章

  1. C#语言实例源码系列--实现五子棋小游戏含人机AI-中
  2. 离散数学 基本等值式
  3. 郑州万向置业oa服务器信息,[办公OA]-致远OA控件安装说明
  4. Django2.2丨模型和admin站点
  5. github上传自己的作品
  6. 多普达S1加强版刷机升级至Windows Mobile 6.5
  7. 奇酷360 8692-A008692-M02卡刷线刷教程ROM固件包下载
  8. HDU 1215 七夕节
  9. iOS——frame bounds
  10. oracle数据库系统中启动数据库第一步,Oracle数据库基础题库【含答案】