在OpenOffice.org和微软Office之间共享文档
原文:Sharing files between OpenOffice.org and Microsoft Office。翻译可能也比较随意。
本文版权请向原文网站及原作者咨询。仅在已经获取原文使用权的情况下,以下文字可自由使用。本翻译未获原网站或原作者授权。
要用OpenOffice.org,不可避免的问题之一就是如何同MS Office共享文档。有些人可不想这么做,他们会建设使用HTML/PDF/RTF来共享,但这仍然不是长久之计,特别是你的老板用MS Office的时候。其实这件事不难,只要搞明白什么能共享,什么不能,两边都不会再感到头痛。
在OpenOffice.org中,用File > Wizards > Document Converter就可以把一个目录下的所有微软文档都转换成OpenOffice文档,如果你只在乎内容,而忽略一些小的格式上的不便的话,这个小工具就足够了。
在OpenOffice.org 2.0中,把一个文件输出为MS Office文档已经非常简单。但总还有一些MS的特性不被OOo支持或不能完全支持,这些不能完美支持的特性在输出时就会简单抛弃掉。所以,要完美共享文档的前提就是搞明白哪些特性能被OOo完美支持。
共享的准备
第一步是要确定一个输出过滤器,OOo2.0支持Word 6.0, 97/2000/XP以及2003xml几种,这里,请坚持选用97/2000/XP这个,因为它是目前毛病最少的过滤器,虽然不完美也不是最新格式。(OOo对MS格式的理解是通过猜测实验或许反向工程的手段进行的,不可能是完美的。译注)
第2步,如果格式很重要,请确认在OOo里所用的字体在MS Office里面也能使用。否则,MS会用相同字号的Times Roman字体来替换所有找不着的字体,这样格式就全毁了。在从Linux共享到Windows的时候,这个问题可能会比较严重,但不论什么平台,最好都确认一下。
如果你坚持只用标准字体,即Times Roman 或 Helvetica(中文应该坚持用宋体-Simsun或用黑体作为强调,不要用粗体,因为Linux平台对中文粗体的支持还有点麻烦。在正规出版物上中文也没有粗体的用法。)如果在所有机器上都安装了OOo,还可以使用Bitstream Vera字体,这是一个TTF的开源字体,但它的效果可能会比较柔和一些。如果你对美术效果比较在意,解决方法是在所有机器上装上所有字体(请先检查许可协议),或者用PDF来共享文件。
如果你用了非标准字体,请记住名字一样绝不意味着字体真的效果一样,比如有许多字体名字叫Garamond,但它们中间只有很少一些是相同的。对中文而言,微软字体、中易字体、方正字体、华文字体等相同名字之间也都有不小的差别。更麻烦的是,这些字体对Linux而言都有麻烦,简单地用宋体或黑体或仿宋或楷应该是推荐的。
下面对OOo自己进行设置。首先,选中所有在Tools > Options > Load/Save > Microsoft Office下面的选项,这可以提升OOo对OLE的支持--仅在支持OLE对象的系统上有效。其次,选中所有在Load/Save > VBA Properties中的选项,这样就可以在OOo另存时保存文档中的VB脚本(OOo不会执行这些脚本),如果不选中,则这些VB脚本就会被扔掉。
事先注意这些事可以极大地减轻共享文档的痛苦。但如果想在共享中完美地保留格式,则还需要一些手段。而如果你在设定格式时使用样式,而不是手工设定字符和段落,则这个手段会变得很简单。样式可以保存在一个模板文件中,因此你只需要设定一次即可。最重要的是,字符和段落的样式可以完美地从OOo Writer迁移到MS Word,这样就容易多了。
在开始共享文档之前,打开一个空白的Writer窗口,选中Tools > Options > OpenOffice.org Writer > Compatibility中的选项。其中有一些是为了兼容StarOffice--OOo的商业版本,但其中有半数都是为了兼容MS Word。其中有些设置,是为了让OOo像MS Word那样增加行距和对象边距的:
在段落和表格之间添加空白(当前文档)
不在行间增加额外间距
在表格单元的底部增加段落和表格间距
定位对象时考虑折行
如果是在导入MS Word文档,应该选中“在页顶部(当前文档)增加段落和表格间距”。如果所有的电脑都使用同一型号的打印机或PS打印机,则不论导入还是导出,都应该选中“在格式化时使用打印机单位”。这一选项提供了一个独立于软件的通用标准。(注:这些选项相当有用,以前打开一个有表格的Word文档时,经常出现格式超高的情况,这样设置即可消除。)
在设置时,可以点击Use as Default(设为缺省值)来把你的选择设为缺省值。也有些设置只针对当前文档,这可以通过保存为模板来保留:File > Template > Save。
在Writer和Word之间共享文档
有了以上的设置,共享文档应该问题就比较少了。可能的困难包括插入对象和页面级别的格式化。
字符和段落格式,不论手工设置还是使用样式,通常迁移是简单的。如果所用的字体都有,则字体、字号、效果以及定位都是没有问题的;字符旋转和字体宽度的变化亦无迁移问题。基本的段落格式也是同样,比如行间距和Tab(制表符)。OOo使用的列表格式是MS Office不支持的,但同本个列表样式相联系的段落可以在Word中也使用相同类型的列表。段落格式中不被MS Word支持的特性包括自定义连字符,分页,两端对齐的段落的最后一行,这些元素会因为Word的缺省设置而被抛弃。所以结果就是分页和断行会有些微的不同--多数也不过在行数上多了一行。
在OOo的早期版本中,有序列表(用数字做前缀的)和无序列表(用各种符号做前缀)在转换中是个问题,主要是因为它和Word在无序列表中用不同的字符来做前缀。但在2.0中,这个问题基本没有。使用特殊字符做前缀仍旧会有问题,那是因为OOo用了Unicode,而Word仍旧使用Ansi字符,除此之外,高级的如前缀(数字或字符)前后的文字都可以正确的转换。关于列表最大的问题在于Tools > Outline Numbering的使用,它会让存为MS Word格式不能成功。
多数域的使用也没有问题,包括页码,交叉引用和目录。实际上,即便是自定义的目录,比如页码在前,都可以成功地在Word中打开。而另外一些域,比如要依赖于文档属性的字数统计,会被转成普通文本,这在两个软件中来回转换时必然要出问题。还有些和条件文本有关的域在Word中完全不工作,如隐藏文本,隐藏段落和输入列表。隐藏文本在Word中直接消失,隐藏段落会显示出来,而输入列表会固定在当前的选择上。
插入对象的情况比较复杂,许多普通的对象可以正常使用。超链接可以,除非它带着个帧,同样的还有备注和修订信息。
图片的设置,包括尺寸、锚定和对齐都没有问题,但如果在Writer中设定了Align as Character会比较麻烦,这种情况下Word会不显示这个图片。复杂的表格和边框设置一般没有问题,但嵌套表格在Word中不能工作。用绘图工具绘出的图形没有问题,但图形编号以及复杂图表也不行。脚注一般没有问题,但一般会有页码重排的麻烦,所以最后还是在文档最后做尾注。
也有不少对象是不能转换的,包括动画和嵌入的OOo文档。在Linux上用OOo时,来自Word文件的OLE对象也不能转换,因为操作系统根本不支持它们,除非是在Insert > Object菜单下列出的那些。
另外一些不能成功转换的东西多是和页面布局有关的,因为MS Word根本没有考虑印刷问题。页面样式中的页边距可以保留,但页面样式自己会丢失。同样的还有除去第一个之外的所有页眉和页脚,以及为它们设定的边框和阴影。同样,文本框可以转换,但它们的设置会丢掉。Section不行,甚至更麻烦的它们还会被当作分页符,此外还有密码保护和隐藏设置。而文本框或Section中分成多栏的,经常会只显示前面几行。
对于主控文档这种概念,既不能导入也不能导出。
在Calc和Excel之间共享文档
这两个速算表程序之间转换问题主要是函数,基本的函数,比如SUM, AVERAGE, 和 MAX 通常没有问题。但另复杂的函数可就未必,使用之前请查阅在线帮助。虽然Calc是按同Excel兼容的目标设计的,但它们都有专用的函数。其中除了缺乏某函数之外,还有Calc会有两个相似的函数,第一个是正常使用的,第二个是专为兼容Excel设计的。WEEKNUM可以根据ISO 6801来计算给定数据的星期数,WEEKNUM_ADD却是专门兼容Excel的相同功能的函数。
如同Writer一样,对象的情况也很复杂。特殊的图表是不行的,页面和单元格样式也不行,尽管使用样式的单元格的格式可以保存。
在Impress和PowerPoint之间共享文档
在OOo2.0中,PPT的过滤器比以前要可靠得多。比如,不能转换主幻灯片中的背景图片的毛病已经没有了。幻灯片的导出也相当可靠,虽然还需要一些实验。但OOo Impress生成的GIF动画在PowerPoint中仍旧不能打开。另外,复杂的图表也不可靠。所以推荐用Draw来生成图表,再转成通用的图片格式再插入。
从PowerPoint中导入时,要注意到Impress不会理会多数声音的设置。尽管Impress在2.0中已经增加了对更多种声音格式的支持,但它仍然缺乏记录声音和对话的工具,也不能在幻灯中播放CD音轨。Impress中的声音仅限于单张幻灯片中。另外,Impress也不支持PowerPoint的打包功能,也不能把所有图片声音和字体都保存到CDROM中。
共享Draw文件
Draw自己的格式,odg/sxd,都不被MS Office支持。但Draw可以输出多种常见的图形格式,包括png/gif/jpeg在内。这些格式都可以被MS Office插入。所以共享方案只能是保留原始文件,但输出成图片。
结论
这还不是一个完整的能否工作的特性列表,事实上也还没有这个列表。在线帮助已经提示了可能存在问题的地方,但现在的MS Office并未把OOo 2.0当回事,甚至还表现出一些不必要的偏执。
最后,如果真有什么在两套Office软件之间共享文档的秘诀的话,那就是:保持简单。格式越简单,就越少问题。对象,页面设置以及超出文字和段落以外的样式都可能出现问题。
还有必须记住的是,除非是最简单的情况,否则情况不大可能是完美的。在办公软件之间共享文档总是很难的。对商业公司来说,设计输入输出过滤器是非常昂贵的,对自由软件开发者来说又完全没有吸引力。更由于MS使用专有格式,而且还经常改来改去,开发者只能用反向工程的手段,这样就更难以进步了。
在这种情况下,共享文档时有些问题再正常不过,倒是如果你能完美共享的话还真是令人惊奇。
http://blog.cathayan.org/item/1038
本文版权请向原文网站及原作者咨询。仅在已经获取原文使用权的情况下,以下文字可自由使用。本翻译未获原网站或原作者授权。
要用OpenOffice.org,不可避免的问题之一就是如何同MS Office共享文档。有些人可不想这么做,他们会建设使用HTML/PDF/RTF来共享,但这仍然不是长久之计,特别是你的老板用MS Office的时候。其实这件事不难,只要搞明白什么能共享,什么不能,两边都不会再感到头痛。
在OpenOffice.org中,用File > Wizards > Document Converter就可以把一个目录下的所有微软文档都转换成OpenOffice文档,如果你只在乎内容,而忽略一些小的格式上的不便的话,这个小工具就足够了。
在OpenOffice.org 2.0中,把一个文件输出为MS Office文档已经非常简单。但总还有一些MS的特性不被OOo支持或不能完全支持,这些不能完美支持的特性在输出时就会简单抛弃掉。所以,要完美共享文档的前提就是搞明白哪些特性能被OOo完美支持。
共享的准备
第一步是要确定一个输出过滤器,OOo2.0支持Word 6.0, 97/2000/XP以及2003xml几种,这里,请坚持选用97/2000/XP这个,因为它是目前毛病最少的过滤器,虽然不完美也不是最新格式。(OOo对MS格式的理解是通过猜测实验或许反向工程的手段进行的,不可能是完美的。译注)
第2步,如果格式很重要,请确认在OOo里所用的字体在MS Office里面也能使用。否则,MS会用相同字号的Times Roman字体来替换所有找不着的字体,这样格式就全毁了。在从Linux共享到Windows的时候,这个问题可能会比较严重,但不论什么平台,最好都确认一下。
如果你坚持只用标准字体,即Times Roman 或 Helvetica(中文应该坚持用宋体-Simsun或用黑体作为强调,不要用粗体,因为Linux平台对中文粗体的支持还有点麻烦。在正规出版物上中文也没有粗体的用法。)如果在所有机器上都安装了OOo,还可以使用Bitstream Vera字体,这是一个TTF的开源字体,但它的效果可能会比较柔和一些。如果你对美术效果比较在意,解决方法是在所有机器上装上所有字体(请先检查许可协议),或者用PDF来共享文件。
如果你用了非标准字体,请记住名字一样绝不意味着字体真的效果一样,比如有许多字体名字叫Garamond,但它们中间只有很少一些是相同的。对中文而言,微软字体、中易字体、方正字体、华文字体等相同名字之间也都有不小的差别。更麻烦的是,这些字体对Linux而言都有麻烦,简单地用宋体或黑体或仿宋或楷应该是推荐的。
下面对OOo自己进行设置。首先,选中所有在Tools > Options > Load/Save > Microsoft Office下面的选项,这可以提升OOo对OLE的支持--仅在支持OLE对象的系统上有效。其次,选中所有在Load/Save > VBA Properties中的选项,这样就可以在OOo另存时保存文档中的VB脚本(OOo不会执行这些脚本),如果不选中,则这些VB脚本就会被扔掉。
事先注意这些事可以极大地减轻共享文档的痛苦。但如果想在共享中完美地保留格式,则还需要一些手段。而如果你在设定格式时使用样式,而不是手工设定字符和段落,则这个手段会变得很简单。样式可以保存在一个模板文件中,因此你只需要设定一次即可。最重要的是,字符和段落的样式可以完美地从OOo Writer迁移到MS Word,这样就容易多了。
在开始共享文档之前,打开一个空白的Writer窗口,选中Tools > Options > OpenOffice.org Writer > Compatibility中的选项。其中有一些是为了兼容StarOffice--OOo的商业版本,但其中有半数都是为了兼容MS Word。其中有些设置,是为了让OOo像MS Word那样增加行距和对象边距的:
在段落和表格之间添加空白(当前文档)
不在行间增加额外间距
在表格单元的底部增加段落和表格间距
定位对象时考虑折行
如果是在导入MS Word文档,应该选中“在页顶部(当前文档)增加段落和表格间距”。如果所有的电脑都使用同一型号的打印机或PS打印机,则不论导入还是导出,都应该选中“在格式化时使用打印机单位”。这一选项提供了一个独立于软件的通用标准。(注:这些选项相当有用,以前打开一个有表格的Word文档时,经常出现格式超高的情况,这样设置即可消除。)
在设置时,可以点击Use as Default(设为缺省值)来把你的选择设为缺省值。也有些设置只针对当前文档,这可以通过保存为模板来保留:File > Template > Save。
在Writer和Word之间共享文档
有了以上的设置,共享文档应该问题就比较少了。可能的困难包括插入对象和页面级别的格式化。
字符和段落格式,不论手工设置还是使用样式,通常迁移是简单的。如果所用的字体都有,则字体、字号、效果以及定位都是没有问题的;字符旋转和字体宽度的变化亦无迁移问题。基本的段落格式也是同样,比如行间距和Tab(制表符)。OOo使用的列表格式是MS Office不支持的,但同本个列表样式相联系的段落可以在Word中也使用相同类型的列表。段落格式中不被MS Word支持的特性包括自定义连字符,分页,两端对齐的段落的最后一行,这些元素会因为Word的缺省设置而被抛弃。所以结果就是分页和断行会有些微的不同--多数也不过在行数上多了一行。
在OOo的早期版本中,有序列表(用数字做前缀的)和无序列表(用各种符号做前缀)在转换中是个问题,主要是因为它和Word在无序列表中用不同的字符来做前缀。但在2.0中,这个问题基本没有。使用特殊字符做前缀仍旧会有问题,那是因为OOo用了Unicode,而Word仍旧使用Ansi字符,除此之外,高级的如前缀(数字或字符)前后的文字都可以正确的转换。关于列表最大的问题在于Tools > Outline Numbering的使用,它会让存为MS Word格式不能成功。
多数域的使用也没有问题,包括页码,交叉引用和目录。实际上,即便是自定义的目录,比如页码在前,都可以成功地在Word中打开。而另外一些域,比如要依赖于文档属性的字数统计,会被转成普通文本,这在两个软件中来回转换时必然要出问题。还有些和条件文本有关的域在Word中完全不工作,如隐藏文本,隐藏段落和输入列表。隐藏文本在Word中直接消失,隐藏段落会显示出来,而输入列表会固定在当前的选择上。
插入对象的情况比较复杂,许多普通的对象可以正常使用。超链接可以,除非它带着个帧,同样的还有备注和修订信息。
图片的设置,包括尺寸、锚定和对齐都没有问题,但如果在Writer中设定了Align as Character会比较麻烦,这种情况下Word会不显示这个图片。复杂的表格和边框设置一般没有问题,但嵌套表格在Word中不能工作。用绘图工具绘出的图形没有问题,但图形编号以及复杂图表也不行。脚注一般没有问题,但一般会有页码重排的麻烦,所以最后还是在文档最后做尾注。
也有不少对象是不能转换的,包括动画和嵌入的OOo文档。在Linux上用OOo时,来自Word文件的OLE对象也不能转换,因为操作系统根本不支持它们,除非是在Insert > Object菜单下列出的那些。
另外一些不能成功转换的东西多是和页面布局有关的,因为MS Word根本没有考虑印刷问题。页面样式中的页边距可以保留,但页面样式自己会丢失。同样的还有除去第一个之外的所有页眉和页脚,以及为它们设定的边框和阴影。同样,文本框可以转换,但它们的设置会丢掉。Section不行,甚至更麻烦的它们还会被当作分页符,此外还有密码保护和隐藏设置。而文本框或Section中分成多栏的,经常会只显示前面几行。
对于主控文档这种概念,既不能导入也不能导出。
在Calc和Excel之间共享文档
这两个速算表程序之间转换问题主要是函数,基本的函数,比如SUM, AVERAGE, 和 MAX 通常没有问题。但另复杂的函数可就未必,使用之前请查阅在线帮助。虽然Calc是按同Excel兼容的目标设计的,但它们都有专用的函数。其中除了缺乏某函数之外,还有Calc会有两个相似的函数,第一个是正常使用的,第二个是专为兼容Excel设计的。WEEKNUM可以根据ISO 6801来计算给定数据的星期数,WEEKNUM_ADD却是专门兼容Excel的相同功能的函数。
如同Writer一样,对象的情况也很复杂。特殊的图表是不行的,页面和单元格样式也不行,尽管使用样式的单元格的格式可以保存。
在Impress和PowerPoint之间共享文档
在OOo2.0中,PPT的过滤器比以前要可靠得多。比如,不能转换主幻灯片中的背景图片的毛病已经没有了。幻灯片的导出也相当可靠,虽然还需要一些实验。但OOo Impress生成的GIF动画在PowerPoint中仍旧不能打开。另外,复杂的图表也不可靠。所以推荐用Draw来生成图表,再转成通用的图片格式再插入。
从PowerPoint中导入时,要注意到Impress不会理会多数声音的设置。尽管Impress在2.0中已经增加了对更多种声音格式的支持,但它仍然缺乏记录声音和对话的工具,也不能在幻灯中播放CD音轨。Impress中的声音仅限于单张幻灯片中。另外,Impress也不支持PowerPoint的打包功能,也不能把所有图片声音和字体都保存到CDROM中。
共享Draw文件
Draw自己的格式,odg/sxd,都不被MS Office支持。但Draw可以输出多种常见的图形格式,包括png/gif/jpeg在内。这些格式都可以被MS Office插入。所以共享方案只能是保留原始文件,但输出成图片。
结论
这还不是一个完整的能否工作的特性列表,事实上也还没有这个列表。在线帮助已经提示了可能存在问题的地方,但现在的MS Office并未把OOo 2.0当回事,甚至还表现出一些不必要的偏执。
最后,如果真有什么在两套Office软件之间共享文档的秘诀的话,那就是:保持简单。格式越简单,就越少问题。对象,页面设置以及超出文字和段落以外的样式都可能出现问题。
还有必须记住的是,除非是最简单的情况,否则情况不大可能是完美的。在办公软件之间共享文档总是很难的。对商业公司来说,设计输入输出过滤器是非常昂贵的,对自由软件开发者来说又完全没有吸引力。更由于MS使用专有格式,而且还经常改来改去,开发者只能用反向工程的手段,这样就更难以进步了。
在这种情况下,共享文档时有些问题再正常不过,倒是如果你能完美共享的话还真是令人惊奇。
http://blog.cathayan.org/item/1038
欢迎大家扫描下面二维码成为我的客户,扶你上云