矢量图和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数据复制到剪切板的过程:
//请复制到MSPaint或Word查看。
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#define Random (rand()%256)
void DrawEMF(HDC hdc)
{
RECT rect;
static HFONT hFont;
int h=;
hFont=CreateFont(h,,,,,,,,,,,,,"Consolas");
SelectObject(hdc,hFont);
char string[]="Hello World!\n你好,世界!Hello World!\n你好,世界!Hello World!\n你好,世界!Hello World!\n你好,世界!";
for(int i=; i</h; i++) {
SetTextColor(hdc,RGB(Random,Random,Random));
TextOut(hdc,,i*h,string,strlen(string));
}
}
int main()
{
//像素点的宽和高
int width = ;
int height = ;
int cxMms, cyMms, cxPix, cyPix;
HWND hwndClient=GetDesktopWindow();
HDC hdc = GetDC(hwndClient);
cxMms = GetDeviceCaps (hdc, HORZSIZE);
cyMms = GetDeviceCaps (hdc, VERTSIZE);
cxPix = GetDeviceCaps (hdc, HORZRES);
cyPix = GetDeviceCaps (hdc, VERTRES);
ReleaseDC(hwndClient, hdc);
// printf("%d %d %d %d\n",cxMms,cyMms,cxPix,cyPix);
RECT rcImg= {,,(width-)*cxMms * / cxPix,(height-)*cyMms * / cyPix};
HDC dc = CreateEnhMetaFile(NULL, NULL, &rcImg, (LPSTR)NULL);
DrawEMF(dc);
HENHMETAFILE hemf= CloseEnhMetaFile(dc);
OpenClipboard();
EmptyClipboard();
SetClipboardData(CF_ENHMETAFILE, hemf);
CloseClipboard();
return ;
}
使用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格式。
矢量图和Word:EPS,PDF,EMF和SVG的更多相关文章
- csv读入数据,用julia/matplotlib/pyplot 画矢量图导入word中
这是是用julia来实现画图.julia有三个画图库:Winston.Gadfly.PyPlot 这里用的是pyplot,事实上他是基于matplotlib的 1.首先在juno里安装两个库 juno ...
- Android 使用 SVG 矢量图
android svg矢量图 可能包含的操作有: SVG图还包括改变颜色,透明度,大小,矩阵操作(平移.旋转.缩放),selector, (图标,背景,按钮),动画,等 setTint(int Col ...
- PDF截取矢量图
PDF截取矢量图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 方法与步骤 下载并安装 Adobe Acrobat X Pro 软件 点击右侧按钮(工具)-页面-裁剪-单击并选择区域-双击实 ...
- 如何从PDF文件中提取矢量图
很多时候我们需要PDF文档中的插图,直接用pdf中的复制或者截屏软件只能提取位图格式的图片,放大缩小难免失真. 本文教大家一种一种从pdf中提取矢量图的方法. 工具软件: 1 adobe acroba ...
- 【译】在Asp.Net中操作PDF - iTextSharp - 绘制矢量图
原文 [译]在Asp.Net中操作PDF - iTextSharp - 绘制矢量图 在上一篇iTextSharp文章中讲述了如何将现有的图片插入PDF中并对其进行操作.但有时,你需要在PDF中绘制不依 ...
- C# Word转PDF/HTML/XML/XPS/SVG/EMF/EPUB/TIFF
一款有着强大的文档转换功能的工具,无论何时何地都会是现代办公环境极为需要的.在本篇文章中,将介绍关于Word文档的转换功能(Word转XPS/SVG/EMF/EPUB/TIFF).希望方法中的代码能为 ...
- iOS 矢量图pdf替换2倍3倍图
一.在开发中矢量图的使用大大提高设计的切图效率! ios 中可以用pdf替换现在的2倍3倍图(1倍图已经忽略) 1.将pdf矢量图拖进工程Assets.xcassets中 2.按照步骤操作 3.矢量图 ...
- C# 矢量图EMF 总结
个人知识记录.如果有用请点赞,否则勿喷.忽略. 个人站点:https://i.cnblogs.com/EditPosts.aspx?opt=1 注意:句柄的操作1.创建 代码如下: Metafile ...
- Python matplotlib图片转化成矢量图并裁剪
Python目前可以生成的图的格式是:eps, jpeg, jpg, pdf, pgf, png, ps, raw, rgba, svg, svgz, tif, tiff 在写论文时候我一般生成png ...
随机推荐
- c++ 定义一个结构体student,输入多个student的信息并以三种方式显示
#include <iostream> #include <string> using namespace std; const int slen = 30; struct s ...
- MySQL多源复制
MySQL多源复制 1. 配置多源复制 1.1 配置环境如下 1.2 从库的重要参数配置 1.3 在Master上导出需要同步的数据库 1.4 在master上创建复制账号 1.5 备份数据导入 1. ...
- How To Add Swap Space on Ubuntu 16.04
Introduction One of the easiest way of increasing the responsiveness of your server and guarding aga ...
- Laravel中chunk组块结果集处理
如果你需要处理成千上万个 Eloquent 结果,可以使用 chunk 命令.chunk 方法会获取一个“组块”的 Eloquent 模型,并将其填充到给定闭包进行处理.使用 chunk 方法能够在处 ...
- redis代理集群(Twemproxy)(1)
redis主从+哨兵模式只解决了读的分布式操作,大大提高了性能:但是写操作,只有主主机器才能进行,从机器无法进行写操作.此时,Twemproxy也就出现了. 这个模式单纯的安装有些复杂,需要引入很多的 ...
- 无需上传附件到服务器,Servlet读取Excel(二)
package com.str; import java.io.File;import java.io.FileInputStream;import java.io.IOException; impo ...
- Linux安装配置***客户端
1.创建root用户 sudo passwd root su root 2.安装shadowsocks sudo apt-get install python-pip sudo pip install ...
- poj 3050 地图5位数问题 dfs算法
题意:一个5*5地图上面,从任意位置上下左右跳五次,组成一个数.问:不重复的数有多少个? 思路:dfs 从任意位置跳5次,说明每个位置都需要遍历. 组成一个数:number*10+map[dx][dy ...
- 系统测试过程截获SQL方法
1 摘要 测试过程中,经常会遇到莫名的各种问题,可能从开发同学的日志无法发现具体出现问题的原因,本着测试同学深入分析.定位问题的目的,经常需要一些额外的手段获得更多的错误异常信息. 我们涉及 ...
- Spring核心技术(十三)——环境的抽象
本章将描述一下Spring中针对环境的抽象. Environment是一个集成到容器之中的特殊抽象,它针对应用的环境建立了两个关键的概念:profile和properties. profile是命名好 ...