精华内容
下载资源
问答
  • 在word中编辑一篇文档时
    千次阅读
    2020-10-23 00:44:06
    838ae873ae90262429d06fdda6901baf.png

    大家好:

    我是小愿望,很高兴你能看到这篇文章,也感谢能在这个平台能跟大家分享,在以后的日子里会陆续发文一些办公软件的操作知识,希望大家喜欢。

    上一篇跟大家分享了WORD文档的文本输入内容,本期我们继续往下分享一下文本的编辑内容。

    背景:千里之行,始于足下,闲话不多说,今天让我们直接进入操作吧。

    操作:

    第一项:文本的选择

    (1)利用”SHIFT”键,任意选择想要文本内容

    在想选取的文本前点击鼠标左键后,按下”SHIFT”键,不要松开,在想要的文本结束处再点击一次鼠标左键,这样便选择到了想要的文本。这种方法常用于跨行或者跨段内容的选择。

    (2)用直接拖拽法选择想要的部分

    在想选取的文本前点击鼠标左键,不要松开,一直拖动到想要的文本结束处,松开。结果可以是一个字符,一个段落,甚至是一篇文章,这种方法常用于几个词语的选择或者是选取网页中的部分内容。

    (3)选取文本中的单行内容

    将鼠标挪到在想选取的文本行左侧,当出现斜向右上的箭头时,点击鼠标左键,这样便选择了目标行。

    (4)选取文本中的某一段落内容

    将鼠标挪到在想选取的文本段落左侧,当出现斜向右上的箭头时,连续点击两次鼠标左键,这样便选择了目标段落。

    (5)选取文本中的全部内容

    一种方法跟前面类似,将鼠标挪到文本任意一行的左侧,当出现斜向右上的箭头时,连续点击三次鼠标左键,这样便选择了全部内容。

    另外在文本任意一位置点击鼠标左键,在按下“Ctrl+A”快捷键,这样也选择到了文本的全部内容。

    09384ec81afac6bba7868d3cb4a38819.gif

    图二:文本的选择

    第二项:快捷键快速输入

    大家都知道,在办公软件操作中,最常用的莫过于复制、剪切、粘贴三个功能了,快捷键依次是“Ctrl+C”、“Ctrl+X”和“Ctrl+V”,复制往往用于出现相同或相似内容的信息输入时,比如公司名称、固定的词语等。剪切往往用在文本修订时,对言语表达的先后顺序进行调整。具体操作如下:

    (1)按上面讲解的方式选取想要复制或者剪切的文本信息

    (2)按下“Ctrl+C”或者“Ctrl+X,在想要粘贴的位置,点击鼠标左键,按下“Ctrl+V”即可。

    温馨提示:如何快速撤回到原来的界面

    在编辑过程中,如果想返回到之前的某一状态,比较常见的方式是利用文档左上方的撤销和恢复箭头,另外也可利用快捷键“Ctrl+Z”、“Ctrl+Y”.

    8ecf50eff4fd282c6ae64ce9e693c203.png

    图三:撤销和恢复

    好了,今天的分享就到这里吧,如果喜欢可以加关注或点赞,或者你有想了解的地方,也可以在下方留言,对于大家的建议或者问题,小编一定会及时回复。

    本文原创,未经允许,禁止转载。

    更多相关内容
  • 列举Word文档中常用编辑操作

    千次阅读 2021-07-15 02:05:07
    我们日常的工作学习中,通常会使用Word软件来处理工作,计算机前的朋友通过前面Word软件的学习,大家都知道Word功能是非常强大的,那么Word文档中常用编辑操作有哪些呢?下面小编就为大家介绍最常用的三个编辑操作...

    在我们日常的工作学习中,通常会使用Word软件来处理工作,计算机前的朋友通过前面Word软件的学习,大家都知道Word功能是非常强大的,那么Word文档中常用编辑操作有哪些呢?下面小编就为大家介绍最常用的三个编辑操作,计算机前的朋友一定记得保存收藏!

    常用一:字体调整,设置行间距。

    1、我们需要打开电脑上的Word文档,启动输入法,输入你要书写的文字,如图所示。

    04afd0b10d1a459a0c082980aa0e8d55.png

    2、点击【工具栏】中的【开始】选项,找到【行距】;如果在下来菜单中没有你想的要的行业,你可以点击【行距选项】在里面进行设置即可,如图所示。

    e31821ed208621eb1d3512e87c2f2bda.png

    常用二:插入表格。

    1、我们找到【工具栏】中的【表格】,点击一下【黑色三角】,如图所示。

    e480ac3c49ea5b418803da6c40e1f07d.png

    2、我们在下拉菜单中,找到【插入表格】。这时候,会显示一个表格设置的弹框,我们只要设置好【行数】和【列数】就可以。这里我把【行数】设置为【5】,【列数】设置为【10】。,如图所示:

    80e718f74b4685d1646e7f16d5117f98.png

    3、最后,我们来看下最终效果,如图所示。

    e902fe04812af13e34c2162afa91ebd2.png

    常用三:插入图片。

    1、我们打开需要插入图片的Word文档,点击【插入】,并找到【图片】,如图所示。

    39658f37663f1b41ade1d91c5a93b811.png

    2、接着,在下拉的菜单中,我们选择【本地图片】进行点击;然后,插入需要的图片即可,如图所示。

    e472b30f7ddd259d2f2ce0a3cc2c4763.png

    3、最终效果如下,如图所示。

    25771024d5a7035c721590ac8dd67f08.png

    以上就是小编列举的Word文档中最常用的三种编辑操作,是不是非常容易,但是在实际的学习工作中,却是非常实用的,电脑前的朋友,你掌握了嘛? 课后,大家要多多思考,勤于练习,让我们一起来努力学习好Word吧!

    本篇文章使用以下硬件型号:联想小新Air15;系统版本:win10;软件版本:Word 2010。

    展开全文
  • 解答:直接将Word中的内容拷贝下来粘贴到网站的编辑,会产生大量Word自动生成的无用代码,从而增加了代码量与页面的大小,不要紧,几十甚至几百后对网站空间及访问的影响就会较大了。且从Word中拷贝
  • 内容里小编为大家分享的是关于易语言读取Word文档内容的方法,需要的朋友们可以学习下。
  • 如何Web页面上直接打开、编辑、创建Office文档 有朋友询问如何Web页面上做到像SharePoint的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时Word在IE被打开那样。...
  • Fckeditor,Ewebeditor 只是HTML编辑器,不能编辑真正的word,把word内容拷贝进来要丢失格式,还要重新排版,也无法精确地控制打印或打印预览。建议使用word的专用在线编辑器——SOAOffice中间件,打开编辑保存都...

    Fckeditor,Ewebeditor 只是HTML编辑器,不能编辑真正的word,把word内容拷贝进来时要丢失格式,还要重新排版,也无法精确地控制打印或打印预览。

    建议使用word的专用在线编辑器——SOAOffice中间件,打开编辑保存都是针对的真正的word,网页里显示的也是真正的word程序

    下面给个asp.net c#的例子

    // 首先创建SOAOfficeX.SOAOfficeCtrl对象

    SOAOfficeX.SOAOfficeCtrl SOACtrl = new SOAOfficeX.SOAOfficeCtrl();

    // 设置界面样式

    SOACtrl.MainStyle = SOAOfficeX.soaMainStyle.VistaBlue;

    SOACtrl.Caption = "标题";

    SOACtrl.BorderStyle = SOAOfficeX.soaBorderStyle.BorderNone;

    //SOACtrl.Titlebar = false;

    //SOACtrl.TitlebarColor = Color.ForestGreen;

    //SOACtrl.TitlebarTextColor = Color.Yellow;

    //SOACtrl.Menubar = false;

    //SOACtrl.Toolbars = false;

    // 设置保存文档的服务器页面

    SOACtrl.SaveDocURL = "SaveDoc.aspx";

    // 打开文档

    SOACtrl.WebOpen("doc/test.doc", SOAOfficeX.soaWorkMode.docAdmin,userName, "Word.Document");

    如何将网页上的内容编辑为word文档?

    1、先在Word中打开一个空的文档,再把网页打开,用鼠标选中想要保存的内容,然后拖到任务栏上的Word图标上,稍等片刻待它的窗口打开时,在窗口中释放左键。这时会出现一个“粘贴选项”按钮;

    ae442c704ada482399aa2bebc769f221.png

    2、点击右边的三角形,在菜单中选择“仅保留文本”,这时网页上讨厌的格式就都不见了,还可以把网页中的图标和图片去掉,这样就完成了拷贝任务。粘贴后没有看到“粘贴选项”按钮,只要在“工具→选项→编辑”下,勾选“显示粘贴选项按钮”即可;

    0c8ce48ffeddc1994720553b64e39b0c.png

    3、把这些文字内容转换成表格了,选中所有内容,然后选择“表格→转换→文字转换成表格”,在对话框中调整列数为“2”;选中“根据文字内容调整表格”;在“文字分隔位置”中选择“其它字符”选项,然后在后面的文本框中输入“:”(冒号),按“确定”后开始转换,转换完成了点击“确定”关闭即可转换到word文档里。

    c4660299c6d853e1f4606dd23606fbdc.png

    网页直接在word中编辑

    刚才试了一下,在网页中 Ctrl+A (全选)

    打开word 再 Ctrl+V(粘贴)

    就可以,界面一点也不乱

    还有 就是 通过 IE浏览器工具栏 中的 ”编辑“(不同版本的IE浏览器,不一样)

    比如IE 7.0 中的 “编辑”是在 “页面”--“使用Microsoft office Word 编辑”点击就进入 word 界面(使用打印预览看看) 仔细研究一下打开的word 就可以弄懂

    (自己刚试过的哦)

    javascript 网页word编辑器

    新浪是用了一个控件,这个控件就自己带这样的功能.

    至于新浪用的控件叫啥我也不知道.

    但是我知道FCKeditor 可以实现.特别简单

    到这里找个demo一看就明白了

    word 编辑网页

    打开“工具”,“Internet选项”,选择“程序”选项卡,在“HTML编辑器”里选择“Microsoft OFFICE WORD”。

    如果没有“Microsoft OFFICE WORD”这个选项,就要通过注册表,“HKEY-CURRENT-USER\Software\Microsoft\Internet Explorer\Default HTML Editor\Shell\Edit\Command”修改了。

    如果你对注册表不太懂,或者嫌麻烦的话,教你一个简单的方法。

    使用傲游浏览器,点“工具”,“内容控制”,“禁止运行Script”,就可以复制了。

    参考资料:Office

    WORD里面的图片如何直接复制到网页编辑器

    目前貌似还做不到这一点(将Word中的图片直接复制/粘贴到Web编辑器中)。而且即便是Word中的文本内容,也不提倡直接拷贝到Web编辑器。因为这么做的结果是:会产生大量Word自动生成的无用代码,从而增加了代码量与页面的大小。只是一、二篇(Word文本直接复制/粘贴到Web中)还不要紧,如果是几十甚至几百篇后,就会对网站空间及访问造成很大的影响。

    正确的做法应该是:将Word中的文章内容全选、复制,然后新建一个记事本文档进行粘贴,再全选记事本中的内容进行复制,粘贴到Web编辑器中。这个过程有点“多此一举”,但操作却很简单,并不会耗费太多的时间。再者,这么做比直接拷贝Word中的内容,其优点是:去除了直接拷贝Word文档内容而产生的大量的无用代码;而缺点是无单独的字体格式,如标题字体等。

    另外,还有一点要注意的是(回到楼主提出的问题):Word文档内容中的图片目前还无法直接复制到Web编辑器中。不过你可以将Word文档另存为html文件而得到这些图片后,再进行上传。

    我打开word怎么自动变成网页编辑器了,而且是标题是百度只读

    右键WORD文件 设置打开方式为WORD即可更多

    抱歉我没说清楚,是word自动编辑网页,打开PPT也是自动编辑那个百度

    你选择文件以后用右键打开文档试试,不要连击;如果还是跳转说明是 软件问题,如果不跳转,说明你机器中病毒了

    麻烦的是我没打开文件,就是打开word就自动打开了网页文件,我打开DOC文件可以正常打开

    那应该是镜像劫持了,用杀毒软件修复一下,实在不行,每次使用前新建一个文档,WORD或PPT或者是你需要的格式,都可以直接右键新建的

    怎样用word编辑下载的网页文件?记得原来实用工具栏有个Word编辑器的,现在找不到了,有什么方法吗?

    下载使用 世界之窗浏览器3.0版 菜单栏 编辑 用编辑模式查看 通常就可以选择所需文字 之后就ctrl加c ,然后打开wps文字或word之类的,再ctrl加v即可。 如果说的是百度文库 豆丁文档之类的 可以下载专用工具,如 爆米花百度文库下载器,百度豆丁文档资源下载器 需先安装 netframework2.0。

    展开全文
  • 富文本编辑器复制word文档中的图片

    千次阅读 2021-07-29 23:51:55
    title: 富文本编辑器复制word文档中的图片 date: 2020-06-24 sidebar: auto categories: 前端 tags: 富文本编辑word文档 文章有点长,感觉每次写文章都特别啰嗦,如果不想看过程的话直接跳到总结,那边有核心...

    文章有点长,感觉每次写文章都特别啰嗦,如果不想看过程的话直接跳到*动手实践那一步,那边有核心的方法~

    富文本编辑器复制 word 文档中的图片

    • 问题点:从 word 文档复制进来的内容的图片都是 file:/// 协议,这时候如果我们的页面是 http://或者 https:// 协议的话,就不允许读取图片了。

    除非页面也是本地文件打开的(但是实际项目中基本上是不可能的了):

    与 ckeditor 相见恨晚

    paste-from-word demo

    看,ckeditor 就支持!然而这时候的项目已经有太多历史包袱(包括后面新开发的插件,我用的是 tinymce

    倒不是说 tinymce 不好,只是用多了你会发现。。。真的很不好(说来话长,后面记录 tinymce 的时候在吐槽把)

    如果你也有编辑器需求,而且没有历史包袱,直接尝试 ckeditor 把

    获取图片的前奏

    要获取图片,先从剪贴板入手,因为我们的数据源最后是从剪贴板复制过来的。

    先了解几个知识点,才能更好理解后面的内容

    1. 为什么网站不能直接读取图片?因为安全性:

    ckeditor 在怎么强大也不可能从 http/https 协议下的网址读取 file:/// 的文件。原因也很简单,如果能读取的话,岂不是网站能把我们全部的资料都读到?


    1. word 文档内部的东西

    word 文档其实只需要把后缀改为 .zip。然后打开对应的目录,你会发现图片就存在里面,而且 word 目录下还有一个 webSettings.xml 里面就存放着 word 文档的信息。感兴趣的就自己找一个看看把


    1. 关于系统剪贴板/JS 中的 clipboardData

    我们经常用到的复制某一段字的功能,其实核心就是用到了 window 子对象 clipboardData 的一个方法:setData()

    clipboardData.setData(sDataFormat, sData)
    
    • sDataFormat:要复制的内容的格式;
    • sData:要复制的内容。

    只是因为 clipboardData 还是实验性功能,所以平时用的不多。接下来要说的东西就和 sDataFormat 息息相关。


    获取剪贴板内容

    1. 主动获取
    • 缺点:

      • 只能在 https 域名下使用(见下图 1)
      • 页面必须聚焦,鼠标在控制台都不行(见下图 2)
      • 还会被人发现,甚至被人拒绝(见下图 3)
    • 优点:

      • 他能让你获取剪贴板内容。。。

    navigator.clipboard
      .readText()
      .then(v => {
        console.log('获取剪贴板成功:', v)
      })
      .catch(v => {
        console.log('获取剪贴板失败: ', v)
      })
    
    1. 被控获取 监听 ctrl + v / 粘贴事件

    使用 event 中的 clipboardData 调用 getData 方法,其中的参数目前我知道的有如下几个

    • text 获取文本
    • text/html 获取 html 文本
    • text/plain 获取普通文本,效果和 text 一样
    • text/rtf 获取 rtf 信息 (不懂就问,啥是 rtf
    window.addEventListener('paste', function(e) {
      const clipdata = e.clipboardData || window.clipboardData
      let data = clipdata.getData('text/html')
      console.log(data)
    })
    

    PS:复制后到页面上随便粘贴一下,不一定要找到输入框,按下 ctrl+v 就行

    输出如下:上面还有一大堆乱七八糟的标签,wps 就比 office 干净多了,这个是从 office 复制进来的。

    • clipdata.getData('text/html') 也就是我们富文本用的方法,获取粘贴的内容的 html 代码 注意是 text/html 这里有个坑,后面会说到
    • clipdata.getData('text/rtf') 获取的东西更加乱了,不过里面就记载着我们的图片信息(我的文档就 2 张图片,11mb.可怕)

    有了上面的基础知识,我们就能抛开富文本编辑器,先来实现一个文章最前面的截图,粘贴显示 word 文档的功能。

    <body>
      <p>请按下ctrl+v粘贴内容</p>
      <div id="preview"></div>
      <script>
        window.addEventListener("paste", function (e) {
          const clipdata = e.clipboardData || window.clipboardData;
          document.querySelector('#preview').innerHTML = clipdata.getData("text/html")
        });
      </script>
    </body>
    </html>
    

    获取 word 文档中的图片

    下面根据 ckeditor 的源码来学习,具体的代码是在

    GitHub:ckeditor5-paste-from-office

    或者从 npm 下载:@ckeditor/ckeditor5-paste-from-office

    分析源码:

    src/index.js -> src/pastefromoffice.js (在 init 函数中,执行了一个 activeNormalizer.execute方法)-> src/normalizers/mswordnormalizer.js

    到这里就看到了一个 replaceImagesSourceWithBase64 方法,这就是今天学习的核心

    replaceImagesSourceWithBase64 方法

    该方法在:src/filters/image.js

    replaceImagesSourceWithBase64 函数中,和图片相关的方法是:

    • findAllImageElementsWithLocalSource 查找全部的 file:/// 开头的图片

    createRangeIn、new Matcher、这些方法都不用太过于关注,因为复制进来的都是文本,这些可能是 ckeditor 核心代码中转换为 dom 节点的方法
    我们直接粗暴点渲染为真实 dom,然后在操作真实 dom 就是了
    第 12 行,获取 src 是 file:// 开头的 dom 节点

    function findAllImageElementsWithLocalSource(documentFragment, writer) {
      const range = writer.createRangeIn(documentFragment)
    
      const imageElementsMatcher = new Matcher({
        name: 'img'
      })
    
      const imgs = []
    
      for (const value of range) {
        if (imageElementsMatcher.match(value.item)) {
          if (value.item.getAttribute('src').startsWith('file://')) {
            imgs.push(value.item)
          }
        }
      }
    
      return imgs
    }
    
    • 接着执行 replaceImagesFileSourceWithInlineRepresentation 方法。在这之前还会执行 extractImageDataFromRtf

    extractImageDataFromRtf 方法

    同样是在 src/filters/image.js

    这部分代码是把我们从剪贴板中 getData('text/rtf') 获取到的值做一个加工,提取里面的图片信息(我承认没看懂提取的是啥,我对 rtf 也不那么了解,哈哈哈哈)

    更新一点点东西(关于正则无法匹配到最新的图片节点)
    regexPictureHeader 这段正则中,在以前的时候还是可以用的,可能最近 rtf 又更新了,导致匹配失败,无法生成图片
    于是进过一番探索,根据旧的正则自己删减了一部分匹配规则,进过测试 office 和 wps 都能识别。
    旧的写法: const regexPictureHeader = /{\pict[\s\S]+?\bliptag-?\d+(\blipupi-?\d+)?({\*\blipuid\s?[\da-fA-F]+)?[\s}]?/;
    新的写法:const regexPictureHeader = /{\pict[\s\S]+?({\*\blipuid\s?[\da-fA-F]+)[\s}]
    /;

    function extractImageDataFromRtf(rtfData) {
      if (!rtfData) {
        return []
      }
    
       // 旧的写法
      // const regexPictureHeader = /{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/
      // 新删减后的写法
      const regexPictureHeader = /{\\pict[\s\S]+?({\\\*\\blipuid\s?[\da-fA-F]+)[\s}]*/
      const regexPicture = new RegExp('(?:(' + regexPictureHeader.source + '))([\\da-fA-F\\s]+)\\}', 'g')
      const images = rtfData.match(regexPicture)
      const result = []
    
      if (images) {
        for (const image of images) {
          let imageType = false
    
          if (image.includes('\\pngblip')) {
            imageType = 'image/png'
          } else if (image.includes('\\jpegblip')) {
            imageType = 'image/jpeg'
          }
    
          if (imageType) {
            result.push({
              hex: image.replace(regexPictureHeader, '').replace(/[^\da-fA-F]/g, ''),
              type: imageType
            })
          }
        }
      }
    
      return result
    }
    

    replaceImagesFileSourceWithInlineRepresentation

    同文件下的方法

    传入的参数第一个是 src 为file://的图片节点数组,第二个从 rtf 提取的图片信息数组,第三个就是 ckeditor 自己的方法了,用来显示文本的,不用管他

    还用到了一个 _convertHexToBase64 方法,把 hex 转换为 base64

    接着就是一顿循环了,对应的节点替换为对应的 base64,设置到图片节点的的 src 上,只是这里他们用了自身封装的 writer

    function replaceImagesFileSourceWithInlineRepresentation(imageElements, imagesHexSources, writer) {
      // Assume there is an equal amount of image elements and images HEX sources so they can be matched accordingly based on existing order.
      if (imageElements.length === imagesHexSources.length) {
        for (let i = 0; i < imageElements.length; i++) {
          const newSrc = `data:${imagesHexSources[i].type};base64,${_convertHexToBase64(imagesHexSources[i].hex)}`
          writer.setAttribute('src', newSrc, imageElements[i])
        }
      }
    }
    
    function _convertHexToBase64(hexString) {
      return btoa(
        hexString
          .match(/\w{2}/g)
          .map(char => {
            return String.fromCharCode(parseInt(char, 16))
          })
          .join('')
      )
    }
    

    动手实践,获取图片信息并展示

    上面分析了一些 ckeditor 代码之后,其实我们要用的也就是

    • findAllImageElementsWithLocalSource
      • 这个方法被改造了一下,直接读取实际的 dom 节点,拿到图片节点
    • replaceImagesFileSourceWithInlineRepresentation
      • 这个方法在最后赋值的时候也改了下,因为我们已经记录了实际的 dom 节点,所以直接使用 .setAttribute(‘src’,newSrc)
    • extractImageDataFromRtf
    • _convertHexToBase64

    整理过后的代码如下:

    <body>
      <p>请按下ctrl+v粘贴内容</p>
      <div id="preview"></div>
    
      <script>
        window.addEventListener("paste", function (e) {
          const clipdata = e.clipboardData || window.clipboardData;
          document.querySelector('#preview').innerHTML = clipdata.getData("text/html")
          let rtf = clipdata.getData('text/rtf')
    
          let imgs = findAllImageElementsWithLocalSource()
    
          replaceImagesFileSourceWithInlineRepresentation(imgs, extractImageDataFromRtf(rtf))
    
        });
    
        function findAllImageElementsWithLocalSource() {
          let imgs = document.querySelectorAll('img')
          return imgs;
        }
    
        function extractImageDataFromRtf(rtfData) {
          if (!rtfData) {
            return [];
          }
    
           // 旧的写法
    	  // const regexPictureHeader = /{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/
    	  // 新删减后的写法
    	  const regexPictureHeader = /{\\pict[\s\S]+?({\\\*\\blipuid\s?[\da-fA-F]+)[\s}]*/
          const regexPicture = new RegExp('(?:(' + regexPictureHeader.source + '))([\\da-fA-F\\s]+)\\}', 'g');
          const images = rtfData.match(regexPicture);
          const result = [];
    
          if (images) {
            for (const image of images) {
              let imageType = false;
    
              if (image.includes('\\pngblip')) {
                imageType = 'image/png';
              } else if (image.includes('\\jpegblip')) {
                imageType = 'image/jpeg';
              }
    
              if (imageType) {
                result.push({
                  hex: image.replace(regexPictureHeader, '').replace(/[^\da-fA-F]/g, ''),
                  type: imageType
                });
              }
            }
          }
    
          return result;
        }
    
        function _convertHexToBase64(hexString) {
          return btoa(hexString.match(/\w{2}/g).map(char => {
            return String.fromCharCode(parseInt(char, 16));
          }).join(''));
        }
    
        function replaceImagesFileSourceWithInlineRepresentation(imageElements, imagesHexSources, writer) {
          // Assume there is an equal amount of image elements and images HEX sources so they can be matched accordingly based on existing order.
          if (imageElements.length === imagesHexSources.length) {
            for (let i = 0; i < imageElements.length; i++) {
              const newSrc = `data:${imagesHexSources[i].type};base64,${_convertHexToBase64(imagesHexSources[i].hex)}`;
    
              imageElements[i].setAttribute('src',newSrc)
            }
          }
        }
    
      </script>
    
    </body>
    
    </html>
    

    锦上添花,实现图片上传

    进过上面一系列方法后,我们确实是拿到了 base64 格式的图片,可是这显示未免也太长了一些,如果要实现上传,还得后端给我们重新起一个 base64 图片上传的方法。。。

    base64 转换为 blod 对象

    blod 就是我们平时用 input 选择图片后拿到的 File 类型(不知道有没有解释错,大概就是这个意思)

    方法如下:

    /** 将base64转换为文件对象
     *  @param {String} base64 base64字符串
     *
     */
    function convertBase64ToBlob(base64) {
      var base64Arr = base64.split(',')
      var imgtype = ''
      var base64String = ''
      if (base64Arr.length > 1) {
        //如果是图片base64,去掉头信息
        base64String = base64Arr[1]
        imgtype = base64Arr[0].substring(base64Arr[0].indexOf(':') + 1, base64Arr[0].indexOf(';'))
      }
      // 将base64解码
      var bytes = atob(base64String)
      //var bytes = base64;
      var bytesCode = new ArrayBuffer(bytes.length)
      // 转换为类型化数组
      var byteArray = new Uint8Array(bytesCode)
    
      // 将base64转换为ascii码
      for (var i = 0; i < bytes.length; i++) {
        byteArray[i] = bytes.charCodeAt(i)
      }
    
      // 生成Blob对象(文件对象)
      return new Blob([bytesCode], { type: imgtype })
    }
    

    效果如下

    优化显示的 URL

    上传问题是解决了,可是那么长的 base64 看着实在是糟心,还好我们还有 ObjectURL

    一下子清爽多了:

    let boldFile = convertBase64ToBlob('base64的字符串')
    // 直接使用 URL.createObjectURL 生成
    imageElements[i].setAttribute('src', URL.createObjectURL(boldFile))
    

    blod 转 base64

    既然都说到这里了,还有一个转换就顺便说了把

    function readBlobAsDataURL(blob, callback) {
      var a = new FileReader()
      a.onload = function(e) {
        callback(e.target.result)
      }
      a.readAsDataURL(blob)
    }
    
    readBlobAsDataURL('blod文件对象', function(base64) {
      console.log(base64)
    })
    

    图片读取,图片显示,包括图片转换为 blod 对象也有了,只要图片上传后,在回显一下,就齐活了~

    总结

    核心原理包括 ckeditor 部分源码解读就结束了,当然还有很多细节没考虑,包括一些标签的转换,标签过滤,样式过滤,最主要的是要判断复制进来的到底是不是 word 文档,还有如果拿不到 rtf 等各种情况,都可以研究下 ckeditor 的代码

    流程总结

    1. 监听粘贴事件,获取剪贴板的数据(包括 text/htmltext/rtf
    2. 拿到 html 后把 file:// 开头的 img 节点找出来,然后使用转换方法把 rtf 对应的图片信息也一一对应的找出来
    3. 使用 hex 转 base64 的方法获取到图片的 base64 信息,然后在看需要进行转换

    彩蛋 - 下集预告

    上面说到有一个坑,就是我们获取的 getData('text/html')getData('text/rtf')

    这 2 个东西并不是凭空出现的,而且人为设置的(不要觉得复制的任何东西都有 text/html

    这些东西都是在设置剪贴板的时候 setData('text/html')。设置了有什么,才能拿到什么(因为我在富文本的另一个功能中踩到这坑了,包括 safari 浏览器也有坑!)

    下一篇文章就来写写这个剪贴板的坑!

    复制 word 文档图片原理的文章真的好少~希望我这篇能帮到你

    展开全文
  • 在word中如何对图片进行编辑

    千次阅读 2021-10-28 12:57:50
    有时候可能在word里面插入的图片不符合文档排版,这个时候我们就需要用到图片编辑功能来调整一下,下面就用我常用的软件来和大家分享一下吧。 1,先打开一篇空白文档,点击工具栏里面的插入,插入一张需要编辑的...
  • 前言 我的项目个需求:点击按钮生成可编辑word文档订单详情的信息 ...node.js上面这两文章已经讲的很不错了,但是我实现的过程还是出现了个问题:我后端能生成个完整的word文档
  • 有朋友询问如何Web页面上做到像SharePoint的效果一样,能直接激活客户端的Word来打开.doc文件,而不是类似直接点击.doc文档链接时Word在IE被打开那样。想想这个问题应该很多人都会感兴趣,所以干脆写一篇blog...
  • 在word中编辑文档时,经常需要定义个样式给特定格式的文本使用,如标题1,标题2等,而有时需要在一个新文档A使用个旧文档B定义好的样式。 二、操作步骤 1、打开旧文档B,选择上方标签栏的"样式"->"管理...
  • 如何在word文档中,作文格子内批量输入文档 这样的格子内,书写文字是不是很难受? 那么如何批量的其中填入我们想填写的文字呢? 个输入?真就时间多了没事干了… 其实,只需要这么简简单单的几步...
  • 在线编辑word文档

    千次阅读 2018-11-12 11:46:57
    在线编辑word文档
  • 电脑Word文档中两个表格如何合并

    千次阅读 2021-07-28 05:07:22
    电脑Word文档中两个表格如何合并腾讯视频/爱奇艺/优酷/外卖 充值4折起Word文档是我们经常工作和学习中使用的软件,我们有的时候也会在Word文档中绘制表格。接下来小编就教大家怎么在Word文档中将两个表格拼接。...
  • 计算机应用基础——Word篇Word2003概述 1、Office简介 2、Word2003概述 Word2003的功能和特点 Word2003的运行环境、安装和启动 3、Word2003的窗口组成和基本操作 Word2003的窗口组成 Word2003的基本操作 第...
  • 目录修订历史环境安装0.Python-docx新建文档1.Python-docx编辑已存在文档2.win32com将doc转为docx3.win32com操作word3.1 打开新的word文档并添加内容3.2 打开已存在word文档并添加内容3.3 转换word为pdf4.Python-...
  • 前段时间领导交代了个需求:客户需要个能够web在线编辑文字,如同编辑word文档一样,同时能够将编辑完成的内容导出为word文档并下载到本地。实例化编辑器,并将后台传递的word内容数据(html形式)展现在编辑区域...
  • instant formatting is on及时格式化需要处于开启状态
  • word文档被锁定无法编辑的解决方法

    千次阅读 2022-02-16 12:46:15
    需要密码才能进行编辑… 话不多说, 直接求助于搜索引擎, 脚本之家1的一篇文章, 我得到了一种很完美的解决方案. 解决方案 新建一个Word文档. 点击插入, 点击下拉菜单的文件...选项. 选中写保护的文档, 保存即可...
  • 网上找了好多天将数据库信息导出到word中的解决方案,现在将这几天的总结分享一下。总的来说,Java导出word大致有5种解决方案比较。 1.2 方案比较 1、Jacob是Java-COM Bridge的缩写,它Java与微软的COM组件...
  • word2021怎么合并多个文档?.docx
  • 今天分享的这些Word技巧包含了入门到精通,也许你急需能用上,建议收藏慢慢学哦。Word技巧大全Word谁都会用,高手和菜鸟最明显的区别就是效率,有人可以轻车熟路小时做完好几份Word,有人加班到深夜手酸脖子疼...
  • 前面整理了一篇PDF转word(PDF文档转化成WORD文档破解教程),功能很多,但是有好多小伙伴反应说,能正常转成word文档,但是转成的文档是图片的格式,不可以编辑。 我转了几篇看了一下,确实如此,我们转成word的...
  • Word文档中的公式自动编号的方法

    万次阅读 多人点赞 2022-03-13 20:19:02
    自动给word里的公式进行编号(且编号右侧)的方法,不需要手动去给公式编号、打空格使编号移动等
  • 电脑word文档中分页符如何插入

    千次阅读 2021-07-27 09:36:23
    电脑word文档中分页符如何插入腾讯视频/爱奇艺/优酷/外卖 充值4折起我们使用word文档办公的时候,有时需要使用到分页符,那么今天小编告诉大家的是电脑word文档中分页符如何插入。具体如下:1. 首先我们打开电脑中...
  • Word文档怎么添加拼音给文字注音

    千次阅读 2020-12-24 04:10:44
    在文档中我们有时需要对个别难读的字注音让人明白,或者小学课堂中,常常需要对文章注音帮助阅读,那么在word中怎么完成这个功能呢?Word文档怎么添加拼音?1、打开Word文档。2、该界面内输入我们需要的文字,并将...
  • word文档中默认的对齐方式是什么

    千次阅读 2021-07-27 04:58:41
    使用Word2003编辑文档的过程,段落的对齐方式直接影响Word文档的版面效果。Word2003文档段落的对齐方式包括“水平对齐”和 “垂直对齐”两种方式,其中“水平对齐”方式决定了段落页面水平方向上的排列方式,...
  • 轻松实现Word在线编辑

    千次阅读 2020-01-03 09:40:26
    本文转载自:...原地址:http://blog.joycode.com/kaneboy/archive/2004/11/03/37889.aspx有朋友询问如何Web页面上做到像SharePoint的效果一样,能直接激...
  • 看到的最多的方法就是 「创建讲义」→「清除文字格式」 →「清除空格」 其实也就是打开PPT的下图界面选择导出 然后再创建讲义 最后就是选择只使用大纲 最后的确会生成word文档,但是我的生成的是个空文档 我...
  • Word文档在保存可能遇到各种各样的问题。我们来看以下四大类的11个文档保存问题分别是什么原因引起的,以及如何解决。以 Microsoft Word 文件格式保存文档保存文档后,更改丢失·我网络上打开文档 对于存储...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,468
精华内容 11,787
关键字:

在word中编辑一篇文档时