2007年6月5日星期二

在Openoffice图形里插入EMF图像

OpenOffice的绘图程序画示意图很方便。我喜欢用OO输出PDF,然后把PDF插入文件中用pdfLaTeX处理,这样生成的文档中用的是矢量图,要比位图清晰。看惯了清晰的图,看到模糊的图就不爽想重画。我在OO里面摞着一幅位图临摹这幅图,其它部分都是在OO里面画的,但是图中有一个飞机,用OO似乎不好画,但是用Ipe的样条曲线画起来非常方便,所以我是用Ipe画的飞机,然后保存成EPS格式。

我把这个EPS文件插入OO画的图里面后输出成PDF,用Adobe Reader放大到64倍(Evince, KPDF和xpdf都不能放那么大,我这才发现放很大的好处)后发现飞机线条的边缘竟然有灰色,这在正常大小下看不到。这说明OO对EPS的输出结果不是很好,虽然应该也算“矢量化”。可是我从网上搜索的EMF格式的清华校徽,用OO输出为PDF放大到64倍后,边缘仍然是清晰锐利的,没有丝毫模糊。我得出的结论就是:OO(2.2.0)从EPS输出的PDF质量没有从EMF输出的好。

于是,我就需要把EPS转换为EMF再插入OO了。我在pstoedit的手册页里面明明看到支持EMF的,但是用的时候却说未知格式。无奈的我只好用pstoedit把EPS转换成xfig格式,再从xfig里面输出为emf(天哪!)。可是pstoedit输出的xfig比较丑陋,曲线都是一段一段接起来的,无法满足我挑剔的要求。

我搜索到了一位叫Jan的于2003年(四年前!)在Redhat 9下用pstoedit把EPS转换为EMF,要编译libEMF来让pstoedit支持EMF。于是我在其Sourceforge主页下载了源码,结果编译不过,一堆C++的错误。我很纳闷四年前都能实现的功能,现在的pstoedit竟然不能,为什么Ubuntu发行的pstoedit不加入EMF支持,还要用户自己编译呢?我就发电子邮件请教人家。之后我下载了Windows下的pstoedit,在楼下同学安装后,总算把我的EPS转换为EMF了。不过结果仍然没有原初的EPS完美,放大足够大之后,飞机的轮子就成了八边形……

今天早上收到Jan回复,他说还是要编译libEMF。我也发现pstoedit的EMF支持正是通过libEMF实现的,于是我去pstoedit的Soureforge主页,发现那里可以下载libEMF-1.0.3,有别于前面我在libEMF主页下载到的。然后编译libEMF,再编译pstoedit。虽然pstoedi的checkinstall失败了(它竟然要安装/usr/bin/ld!),但是直接用make出来的pstoedit运行就可以,支持EMF,然后把我的文件转换了。结果和Windows下转换的一样,也是八边形,但只能这样将就了。

折腾一番,算是长了点插图的经验,记在这里供以后回忆参考。

4 条评论:

Pan Yongzhi 说...

今天重读这篇帖子,连我自己都看得费劲,里面几处废话、表述不准、思路不清,研究了一番才想起我为什么要这么折腾了。

Sacco Huo 说...

请教一下博主,现在用什么方法进行emf格式的转换呢?我试了pstoedit的emf确实有这个八边形(no curve)的问题,效果跟Illustrator转相比差太多了

Peter Pan 说...

Sacco, 我很久没有用过EMF格式文件了,不知道什么方法好啊。

Sacco Huo 说...

哈哈,没事,我现在只能勉强用 pdf 直接导出成 tiff使用。
以后真正遇到写论文之类的专业需求时候再想办法吧,找了很久都没有找到比较不错的方案。