使用LibreOffice Draw编辑嵌入到Office(Word、PPT)文档中的OLE Visio图形

本篇文章废话略多,希望知道方法的可以直接看末尾。

Visio是MS推出的一款绘图工具,简单易用。但是从某个版本开始,Visio从Office套件中独立出来,成为了一个单独的软件,需要单独购买。通常,我们从各种渠道购买到的打折Office套件都是不包含Visio的,独立销售的Visio价格并不便宜,如果只是为了偶尔编辑一些带Visio图形的文件,单独购买Visio并不划算。好在我们有LibreOffice,其中的Draw支持读取Visio格式的文件,并且可以实现和Visio类似的功能。

如果用过Visio的话,会知道Visio可以直接编辑嵌入到Word/PowerPoint文档中的Visio图。最近我正好有这样一个嵌入Visio图的文档需要处理,可是在实际操作时发现在用LibreOffice的时候并不能直接编辑嵌入的Visio图形,如果把图形复制并粘贴到Draw中的话,图形只是一个矢量图,只能调整大小,并不能进行任何编辑。

研究一番发现这个Visio图是采用OLE技术嵌入到文档中的,实际上就是把一个Visio文件打包到了文档中。因此解决这个问题的关键就是要把嵌入到文档中的Visio文件提取出来。好在新版的Office文档都是开放的格式,本质上就是一个压缩包,所以我们可以直接用解压工具将文档解压。找到解压出的embeddings文件夹,里面会看到很多名字都是oleObjectXX.bin形式的文件,这些其实就是嵌入到文档中的OLE对象本体。文件扩展名都是统一的bin,因此并不方便通过预览来找到要编辑的Visio文件,但是文件的编号是按照OLE对象在文档中出现的顺序排列的,因此可以通过编号来定位到某一个OLE对象,并通过Draw对其完成编辑。

在解压文档时还可以发现在media目录下有很多emf矢量图文件,而且图片的内容正是Visio图形转成的矢量图,从这里可以猜测出MS在实现OLE的时候,不仅将OLE本体嵌入到了文档中,同时也生成了一张矢量图嵌入到文档中,这样即使缺少相应的OLE对象依赖的组件,也可以保证内容被正确显示,只是无法编辑。

方法总结:
1.将文件保存为新版Office文档格式(docx、pptx、xlsx等);
2.使用解压缩软件将文档解压;
3.找到embeddings文件夹,根据文件编号和文档中OLE对象的出现顺序找到需要编辑的文件;
4.在LibreOffice Draw中打开这个文件并进行编辑;
5.LibreOffice Draw不能直接输出Visio文件,因此可以将图形输出为emf/wmf矢量图或gif/png等带半透明的图片格式并插入原始文档中。

CC BY-NC 4.0 本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial 4.0 International License.

《使用LibreOffice Draw编辑嵌入到Office(Word、PPT)文档中的OLE Visio图形》上有1条评论

  1. LibreOffice汇出所有设定
    LibreOffice的所有设定,都放在LibreOffice资料夹里。

    C:\Users←使用者。 \a←安装作业系统的时候,输入的名称。 \AppData←档案总管〜『隐藏的项目』要开启,才会显示AppData资料夹。 \Roaming\LibreOffice

    备份LibreOffice资料夹,重新安装的时候,再把LibreOffice资料夹,放到原来的地方。

    注:
    1、如果安装的是预览版,因为预览版的名称是LibreOfficeDev,所以会显示LibreOfficeDev资料夹。
    2、正式版跟预览版可以一起安装,如果正式版跟预览版都安装的话,就会显示LibreOffice资料夹跟LibreOfficeDev资料夹。
    3、要清除所有设定,就把LibreOffice资料夹删掉,在开启程式,就会在建立新的LibreOffice资料夹。

    LibreOffice汇出自己做的单一工具栏
    Toolbar=工具栏

    共同路径
    C:\Users←使用者。 \a←安装作业系统的时候,输入的名称。 \AppData←档案总管〜『隐藏的项目』要开启,才会显示AppData资料夹。 \Roaming\LibreOffice\4\user\config\soffice.cfg\modules\下面请接个别软体的分支路径。

    分支路径
    \modules\StartModule\toolbar\自己做的『开始画面』工具栏,都放在这里。

    \modules\swriter\toolbar\自己做的『writer文件』工具栏,都放在这里。

    ‪\modules\scalc\toolbar\自己做的『calc试算表』工具栏,都放在这里。

    ‪\modules\simpress\toolbar\自己做的『impress简报』工具栏,都放在这里。

    ‪\modules\sdraw\toolbar\自己做的『draw绘图』工具栏,都放在这里。

    ‪\modules\smath\toolbar\自己做的『math公式』工具栏,都放在这里。

    ‪\modules\dbapp\toolbar\自己做的『base资料库』工具栏,都放在这里。

    备份档案,重新安装的时候,再把档案,放到原来的地方。

    注:
    1、因为自己做的工具栏,预设的档名,都是用编号,所以要打开档案,才能知道工具栏的名称。
    2、前面的档名『custom_toolbar_』不可以改,改了会出现错误,后面的档名可以改。
    例如:custom_toolbar_c01611ed.xml→custom_toolbar_我我我.xml。
    3、做好的工具栏,可以复制到别的地方用。
    例如:在『writer文件』做好的工具栏,可以复制到『calc试算表』的地方用。

    LibreOffice自制标点符号工具栏
    第一步 启动『录制宏功能』
    工具\选项\高级\启用宏录制(打勾),这样在『工具\宏』里,才会出现『记录宏』的选项。

    第二步 录制宏
    工具\宏\记录宏→录制动作(点『Ω』输入符号→选择符号→插入)→结束记录→宏储存在『Module1』里的名称是Main→修改Main名称→储存。

    第三步 加入新工具栏
    工具\自定义\工具栏→『添加』→『输入名称』(例如:标点符号)→确定,新的工具栏,就会在左上方出现。

    第四步 将宏加入新工具栏
    工具\自定义\工具栏\类别\宏\我的宏\Standard\Module1\Main→点『Main』→添加项目→修改→重命名(可以用标点符号命名)→确定→确定。

11进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注