矢量圖和Word:EPS,PDF,EMF和SVG


1.EMF和Word

  在學校的時候,我思考過一個問題,論文中的插圖如何保證清晰度。關鍵之一就是使用矢量圖。參考知乎問題:如何在論文中畫出漂亮的插圖?。常見的矢量圖包括:EPS,EMF和SVG。SVG適合於瀏覽器,EPS適合於LaTeX,EMF才適合Word。所以,如果在Word插圖,最好是使用EMF格式。常見的軟件如Origin Pro,Mathematica , GNUPlot , Matlab以及R均可以將圖形導出為EMF。其中MATLAB在新版之前,導出的圖形質量一直不太好。而Origin Pro的圖形質量應該是最好的。

  下面的程序演示了圖形軟件將生成的EMF數據復制到剪切板的過程:

 1 //請復制到MSPaint或Word查看。
 2 #include <windows.h>
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 #define Random (rand()%256)
 6 void DrawEMF(HDC hdc)
 7 {
 8     RECT rect;
 9     static HFONT hFont;
10     int h=24;
11     hFont=CreateFont(h,0,0,0,0,0,0,0,1,0,0,0,0,"Consolas");
12     SelectObject(hdc,hFont);
13     char string[]="Hello World!\n你好,世界!Hello World!\n你好,世界!Hello World!\n你好,世界!Hello World!\n你好,世界!";
14     for(int i=0; i<640/h; i++) {
15         SetTextColor(hdc,RGB(Random,Random,Random));
16         TextOut(hdc,0,i*h,string,strlen(string));
17     }
18 }
19 int main()
20 {
21     //像素點的寬和高
22     int width = 1000;
23     int height = 640;
24     int cxMms, cyMms, cxPix, cyPix;
25     HWND hwndClient=GetDesktopWindow();
26     HDC hdc = GetDC(hwndClient);
27     cxMms = GetDeviceCaps (hdc, HORZSIZE);
28     cyMms = GetDeviceCaps (hdc, VERTSIZE);
29     cxPix = GetDeviceCaps (hdc, HORZRES);
30     cyPix = GetDeviceCaps (hdc, VERTRES);
31     ReleaseDC(hwndClient, hdc);
32     // printf("%d %d %d %d\n",cxMms,cyMms,cxPix,cyPix);
33     RECT rcImg= {0,0,(width-1)*cxMms * 100 / cxPix,(height-1)*cyMms * 100 / cyPix};
34     HDC dc = CreateEnhMetaFile(NULL, NULL, &rcImg, (LPSTR)NULL);
35     DrawEMF(dc);
36     HENHMETAFILE hemf= CloseEnhMetaFile(dc);
37     OpenClipboard(0);
38     EmptyClipboard();
39     SetClipboardData(CF_ENHMETAFILE, hemf);
40     CloseClipboard();
41     return 0;
42 }

  使用Ctrl+V粘貼到Word上,導出PDF確認其為矢量圖,效果如圖所示:

  

2.EPS,PDF和SVG轉換為EMF或WMF

  目前能找的方法主要有:Adobe illustrator , Inkscape , Visio。Visio可以將SVG轉換為EMF或WMF。Inkscape轉換效果一般,且在Windows下運行比較卡。

  Adobe illustrator的失真度應該是最小的。不過,在Word 2016上,我碰巧到的情況是,svg用illustrator導出格式應該是emf,eps和pdf用illustrator導出格式應該是wmf,才能保證最后生成pdf不失真。對於eps和pdf而言,pdf格式對字體的支持更好,可以優先考慮生成pdf,在轉成wmf。

  注:Word 2016目前已經支持SVG格式,推薦使用SVG格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM