首页 > 其他分享 >eWebEditor 复制word里面带图文的文章,图片可以直接显示

eWebEditor 复制word里面带图文的文章,图片可以直接显示

时间:2023-08-15 15:14:22浏览次数:39  
标签:function word res result var query eWebEditor 图文

 由于工作需要必须将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中的所有图片,并且有进度条显示

 

编辑

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

 

编辑

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

效果展示:

​编辑

​编辑

​编辑

 

视频教程:

 

动易SiteFactory 4.7整合,动易SiteFactory 6.2整合,dedecms 5.7-ueditor整合,dedecms 5.7-ckeditor3x整合,帝国CMS-ueditor整合,帝国CMS-ckeditor4x整合,dokuwiki整合,Windows控件安装,macOS控件安装,linux-deb控件安装,linux-rpm控件安装,uos控件安装,linux-银河麒麟控件安装,

 

更多详细资料可以参考这篇文章:

详细思路及源码

示例下载:

wordpaster-vue3-cli-ueditor1.5wordpaster-vue-ueditor1.5wordpaster-asp.net-ueditor1.5xwordpaster-php-ueditor1xwordpaster-jsp-ueditor1x​

标签:function,word,res,result,var,query,eWebEditor,图文
From: https://www.cnblogs.com/songsu/p/17631313.html

相关文章

  • Web编辑器 复制word里面带图文的文章,图片可以直接显示
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘贴的原理,通过TheViper找到粘贴图片的方法。其原理为一下步骤:监听粘贴事件;【用于插入图片】获取光标位置;【......
  • 在线编辑器 复制word里面带图文的文章,图片可以直接显示
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>......
  • 警告: 'xxx' should always be multi-word
    警告:Componentname"Login"shouldalwaysbemulti-word原因:eslint语法要求名字必须为双词汇解决:在eslintrc.cjs文件里面输入rules:{"vue/multi-word-component-names":"off",},......
  • Java判断word文档的重复,达到word文档的整理、整合效果代码实现
    在Java中,你可以使用ApachePOI库来操作Word文档并实现判断文档的重复。以下是一种实现思路:导入ApachePOI库:首先,你需要在Java项目中导入ApachePOI库,以便能够使用它的功能。你可以在项目的构建文件(如Maven或Gradle)中添加相应的依赖项。读取Word文档内容:使用ApachePOI库的XWPFDocum......
  • Aspose.Word 的常见使用(3)
    起因因项目需要,而且使用html转Word的时候,样式不兼容问题,于是只能使用Aspose.Word通过代码生成。下面是通过DocumentBuilder来设计Word的,但是和使用模型拼接的差不多,原理基本一致。思路这里是说使用Aspose.Word的使用思路,只想某个功能是怎么使用的可以跳过代码都是人写的,所以每......
  • mysql8默认caching_sha2_password身份验证
    发生这个问题的原因是在mysql8.0以后,caching_sha2_password是默认的身份验证插件,而不是以往的mysql_native_password。在MySQLCommandLine工具下修改mysql的默认身份验证插件即可。Theserverrequestedauthenticationmethodunknowntotheclient[caching_sha2_passw......
  • 【Sword系列】第七届全国残疾人职业技能大赛样题-网络安全-变异凯撒
    前言在密码学中,凯撒密码是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。ROT13是凯撒密码的一种变体,即移位数为13。RO......
  • 码云git clone报错Incorrect username or password ( access token )
    使用码云将仓库clone到本地,报错信息如下:D:\\123\>gitclonehttps://gitee.com/ycyzharry/helloworld.gitCloninginto'helloworld'...remote:Incorrectusernameorpassword(accesstoken)fatal:Authenticationfailedfor'https://gitee.com/ycyzharry/h......
  • 注册表编辑器 桌面右键新建word
    注册表编辑器是什么,如何使用注册表编辑器是Windows操作系统中的一个工具,用于修改Windows注册表的内容。注册表是Windows操作系统中存储配置信息的数据库,包含了系统设置、用户配置、安装程序信息等。要使用注册表编辑器,请按照以下步骤操作:打开注册表编辑器:按下Win+R键,输入"reged......
  • Typora 2022激活图文方法(亲测有效)
    激活证明亲测OK,大家放心食用。下载相关安装包安装包https://typora.io/releases/all补丁包https://kdocs.cn/l/chV3CWzeXgdE安装写作时Typora最新版本号为1.3.8,通过如下链接下载Typora,下载成功后,直接双击安装即可:点击Installforallusers(recommended):这......