文件交换

图片缩略图

EPS Utility Toolbox.

version 1.22 (187kb) by Kesh Ikuma
生成发布商 - Happy EPS图像的一组函数
4.8
5的评级

7下载

更新2014年10月10日

查看版本历史记录

查看许可协议

EPS Utility Toolbox由几种功能组成,可增强内置EPS打印引擎的输出。此工具箱旨在:
*提高EPS标准的依从性:http://partners.adobe.com/public/developer/ps
*提供后代调整
运行epssetup.m首先设置工具箱。
工具箱安装和配置
epssetup -首先运行这个程序来使用这个工具箱
epsfontpath -获取/设置postscript字体搜索路径
EpsFontalias - 获取/设置PostScript字体别名
epsfontlist - 获取搜索路径中的PostScript字体列表

EPS文件生成和转换
epswrite -将图形保存为EPS图像(已修复)
eps2raster -转换EPS图像PNG, BMP, JPEG,或TIFF图像(要求。内容)

EPS文件处理
epsembedfont -嵌入/反嵌入postscript字体(可以嵌入子集或未加密的字体字典)
EPSSETLINESTYLE - 设置线式风格(虚线,虚线和DASH-DOT)
EPSSETBGCOLOR - 设置背景颜色(支持透明度)金宝app
EPSPREVIEW - 添加/删除TIFF预览(REQ。GHOSTSCRIPT)
epssetbbox -设置边界框位置和大小

EPS文件信息
EPSGETBBOX - 获取边界框
epsgetfonts -获取使用的字体
EPS修复功能(由EPSWRITE.M内部调用)
epsfixfonts -修复字体相关问题
EPSFixBackground - 设置数字和轴属性(尤其是颜色)
EpscleanColordict - 清理RGB颜色定义

输入'help epsutil'获取命令窗口帮助。独立的m文件还包括完整的命令窗口帮助文本。

有些文件需要Ghostscript (www.ghostscript.com)安装在计算机上。

设定EPS图像的分辨率及大小:

epswrite(无花果。每股收益','Size',[2 4],'Resolution',600);

大小(= [宽度])以英寸为单位指定,并且在每英寸点处指定分辨率(更高分辨率会增加对象放置的精度)。在MATLAB中键入“帮助epswrite”的全部选项列表。

为作者准备稿件到AIP.org/PEERX -PRESS.ORG,使用

emswrite('fig.eps','embedfont','addsymbol');

嵌入符号字体,因为他们的在线提交系统没有配备符号字体(弄乱所有的TeX字符)。

同时,使用epswrite和eps2raster为我们这些使用pdftex为不接受pdf或png的出版商准备LaTeX手稿。执行

epswrite fig.eps
EPS2RASTER FIG.EPS PNG.

创建Fig.eps和Tim.png。这导致两种格式的相同图像,并且IMO也导致更好的质量图像,而不是直接从MATLAB打印,尤其是在GhostScript的抗锯齿支持。金宝app

提交徽标也使用此工具箱创建:

h =文本(0,0,sprintf (EPS \ nUtility \ nToolbox));
设置(h,'waternalignment','bottom','stopalAlignment','left','fontight','bold');
设置(GCA,'位置',[0.1 0 0.8 1]);
轴关闭
emswrite('logo','size',[150 100] / 200);
eps2箭头('logo','png','解决',200,'deletesource','开')

引用

kesh ikuma(2021)。EPS Utility Toolbox.(//www.tatmou.com/matlabcentral/fileexchange/35429-eps-utility-toolbox), MATLAB中央文件交换。检索

意见及评分(48.

埃里克

你好呀,

谢谢你这个提交。这是非常有帮助的。但是,您可能希望查看EPS2Raster.M文件的注释部分。您说应该以像素中指定“大小”。但是,在第247行中,您计算​​以下内容:

尺寸(:) =圆形(size * opts.resolution);

这为大小向量提供了非常大的数字,因为您将DPI乘以像素中的大小。尺寸应以英寸为单位指定,因此第147行以像素为单位返回正确的大小。如果指定像素中的大小,(例如,150 x 250)和DPI(300)中的分辨率,则为第247行尺寸值获得非常大的数字,这导致计算长度(我从不让它完成)最后给你错误的分辨率。

幸运的是,您不需要更改任何代码来保持它工作,只需更改帮助文件:)尽管,能够以像素为单位指定大小也不错。

另外,当你指定两个非零尺寸时,eps2raster错误。您可能需要为此添加一个错误消息。

再次感谢!

POL HENAREJOS.

亲爱的Kesh。感谢你的投稿。这是难以置信的。然而,我得到一个错误,当我执行'epsembedfont',为一个特定的eps图像。不是所有的图像都会产生这种错误。我使用上一个版本(v12)。
这是跟踪:
单元格内容指数必须大于0

格栅(第28行)中的错误
fontdata {i(n)} = imgdata(iStart(n):iend(n));

EPSEMBETFONT(第85行)错误
[allfonts,embeddedfonts,embeddedfontdata,imgdata] = getfonts(imgdata);从IMGDATA中删除%FontData

PrintResult_LPI中的错误(第105行)
EpsembedFont([FNA'_cber.eps');

谢谢。

马修·费罗

我使用OSX 10.9.5与MATLAB R2014A。当我运行设置文件,我得到了以下错误后,第4步:

步骤4.设置1类型字体搜索路径和字体别名表...
使用RMPREF时出错(第33行)
GROUP和PREF必须已经存在
EPSSetup中的错误(第102行)
Rmpref('epsutil','fontalias')

你知道为什么这个装置不起作用吗?

诺亚莱明 - 小

@kesh,谢谢你发布更新!做得好。

Kesh Ikuma

@noah - 我刚上传的最新版本应该解决这些问题。至于EPSCLEANCOLORDICT等,这些只需要在R2014B前进行。MathWorks完全改变了他们的EPS文件结构,使这些功能完全过时。如果使用R2014B,最新的eMSWRITE应自动将其调用转到这些后处理功能。如果您遇到其他问题,请告诉我。

诺亚莱明 - 小

嗨Kesh。谢谢你的投稿。我在R2014b下运行时有一些错误。第一个错误出现在嵌套函数parse_input中,因为如果N==n0, params单元格永远不会转换为结构。移动一行params = struct(params{:});在if语句解决这个问题之前。然后,EPSCLEANCOLORDICT, EPSFIXBACKGROUND和epssetbgcolor函数都给出错误,因为regexp无法匹配你搜索的字符串…我不知道该怎么办……

Kesh Ikuma

@sajjad - 不可以。此工具箱不打算以超越“修复”一些已知问题的EPS图像。

Sajjad Taghvaee.

使用这个工具箱可以改变eps图像的字体大小吗?

皮特

@Chris -我对wma_ fonts也有同样的问题(matlab似乎在某个时候重命名了它们的字体,而illustrator似乎要求在系统上安装指定的字体,即使它嵌入到文件中??)

通过安装TTX并使用它将其重命名为MWA_CMR10和MWA_CMMI10(然后安装这些新字体)来解决问题,通过[使用Mac OS X]解决了问题。有关步骤说明,请参阅:http://www.fontgeek.net/blog/?cat=7.

我还结束了安装Fontforge并替换CMMI10中的一些字形,在我的版本中有点不起了(例如,三角形而不是小数点)

Kesh Ikuma

@Khawaja - EPS工具工具箱不能帮助您的问题。epsgetbbox只是返回封装在EPS图像中的所有对象的边界框。

如果它们是简单的形状(例如,一组连接的线段),你可能可以通过写你自己的事务长来“解码”后记。第一步是在PS标准的帮助下,在文本编辑器中查看。eps文件,上面的工具箱描述中有链接。祝你好运。

主席

亲爱的伙伴们,
我需要在.eps文件中提取每个形状的宽度和长度。
但是当我使用epsgetbbox函数时,它会给我一个4元素的向量。
但是在我的。eps文件中有7个形状,如何提取边界框或宽度/长度的每个形状。
我将感谢你的帮助

Jan Kappen.

谢谢你!

Kesh Ikuma

@jay - 您不正确地调用emswrite。您需要为EPS文件提供作为第一个参数的文件名。例如,emswrite('myplot.eps','size',[10 15])

也就是说,ESPWRITE应该对你的输入参数集产生一个“官方”错误。我将把这个支票放入下一个版本中。谢谢。

Jan Kappen.

嗨,伙计们,我有以下问题:

epswrite(“大小”,[10]15日)
120如果〜isempty(params.units)
尝试去引用非结构数组字段。

EPSWRITE中的错误(第120行)
如果~ isempty (params.units)

我只运行epssetup,并试图导出一个简单的图形。我用的是matlab 2012b

Kesh Ikuma

@Junjie -你的修复是正确的。我在你的帖子之前上传了固定版本,但是新版本中唯一的变化是你建议的。谢谢。

俊杰王

这可能是因为新版本将关键词“painter”改成了“painters”;

当我将“画家”到程序中的“画家”改为“画家”时修复了它。

谢谢你的伟大作品

俊杰王

嗨Kesh,

我只是想利用您的工具箱,这里我有一个问题(可能是相当愚蠢的一个,:))。我有Ghostscript安装和一切成功时,使用epssetup,当我试图使用epswrite生成我的eps文件,我一直得到以下错误:
使用inputcheck>LocalCheckOption错误(第342行)
非法选项'-painter'给出。

inputcheck(第86行)中的错误
opindex = localCheckOption(cur_arg,选项);

打印错误(第166行)
[pj, devices, options] = inputcheck(pj, inputargs{:});

EPSWRITE错误(第187行)
打印(H,Outfile,CMD {:});

我错过了什么吗?顺便说一下,我运行的是64位Windows 8.1

提前致谢,

俊杰

米歇尔

@keshikuma:你是对的,我用matlab内在函数与matlab的“getdata.m”很合作,事实上我不明白它是如何工作的。非常感谢您的帮助

Kesh Ikuma

@Michele -你提取所有文件了吗?“getdata。M "在"private"子文件夹中,应该可以通过"epssetlinestyle "访问。只要“private”文件夹和“epssetlinestyle.m”文件夹在同一个文件夹中。

米歇尔

@KeshIkuma:非常感谢你的工具箱。然而,我试图运行epssetlinestyle函数,但我收到了这个消息:

???用于输入参数的未定义功能或方法'getData'
“字符”。

错误在==> epssetlinestyle在94
[epsdata,wmfdata,tifdata] = getData(Infile);

作为输入,我正在使用像epssetlinestyle('myfile.eps','param1',....)的东西
我哪里错了?

再次感谢你

Kesh Ikuma

@joseph - getgs()函数在分发中的私有文件夹中。确保您已在下载的zip文件中提取所有文件,保留目录结构。

约瑟夫

当我运行此功能时,我收到以下错误:

未定义的功能或变量'getgs'。

eps2raster出错(第101行)
gsexe = getgs();

我从哪里得到'getgs'函数?

Werner.

@keshikuma,你不知道我有多爱你。我急于完成我的论文,而Matlab EPS / PDF出口给我这么多问题。你只是救了我的生活!太感谢了。

顺便说一句,如果其他人有同样的问题,我已经拥有了同样的问题,将此FEX下载并附上:“尺寸”,“屏幕”到您的ePSWRITE。

再次感谢大家!

Kesh Ikuma

@sourabh - 我想我知道你在这里做错了什么。不要在Matlab图中更改字体,请将其默认Helvetica留在默认。然后,以下是步骤:

1)确保“CMU SAN SERIF”是PostScript Type-1字体(.pfa或.pfb文件)。请注意文件的位置。

2)运行epsfontlist,看看是否列出了“CMU SAN SERIF”。如果没有,请运行epsfontpath并将字体文件的位置添加到EPS Utilities路径

3)使用emswrite生成EPS文件

4)使用epsembedfont与“+ helvetica => cmusansserif”(或epsfontlist中列出的任何内容)选项

如果这个程序不行,请直接给我发一个MATLAB示例图及其EPS输出,我们可以整理一下。

Sourabh

我正在尝试在EPS数字中嵌入CMU SANS Serif字体,试图使用EPSWRITE:
epswrite(fhandle,fname,'e​​medfonts','全部');
但是我仍然看到默认的Courier类型。
查看eps文件,我发现以下字体嵌入:
Courier-Sh-SS和HeoveCheteAlfash-ss
我已经在epsutil \ fonts中放置了所需的pfb文件并重新运行epssetup.m
输出:
步骤2:构建MEX函数…
Decrypt.mexw64成功编译并添加到... \ matlab \ epsutil \私有。
Encrypt.mexw64成功编译并添加到... \ matlab \ epsutil \私有。
...完毕。
第3步:链接到Ghostscript ...
ghostscript可执行文件:“c:\ program文件(x86)\ gs \ gs8.63 \ bin \ gswin32c.exe”
...完毕。
遵循的字体列表,但我想要的字体(CMU SAN SERIF)不在此列表中,也不是嵌入在EPSCRITE编写的EPS文件中的HeogeCatea。
我正在赢得7 64位的Matlab 2013a
我的目标是将数字集成到乳胶稿件中,我想要一致的字体。请帮忙

Sourabh

Kesh Ikuma

@Asmus - 你可以更具体地对这个问题吗?您是否收到错误消息或错误的EPS输出?

据我所知(用多屏Win7测试这个特殊情况),图的负面位置不会影响由EPSCRITE产生的EPS打印。

asmus.

嗨,非常感谢您这个非常包含和彻底的工具箱。

我可能已经错过了一些东西,但似乎紧密边界盒选项有一些问题,在多个屏幕上使用matlab时出现的负面纸张大小。

当新的文件位置被设置在settightpos。没有什么可以解释这种可能性。对吧?还是?

Kesh Ikuma

@conrad - 谢谢您报告错误。但是,我很难评估没有EPS输出文件的问题的确切性质。如果您还有兴趣,请给我发电子邮件给我。

此外,如果你下载了最新的版本(我今天刚刚重新上传),你可以将“Postprocessing”选项设置为“off”,这样应该可以消除错误,并生成EPS文件。

康拉德

嗨Kesh

非常感谢您开发此工具。

我有一个问题,因为我在使用此工具时遇到错误。

我正在使用Mac,所以也许这可能是问题。

如果我不正确地使用该工具,请您告诉我,或者如果有某种方式解决以下问题,请告诉我?

我很欣赏你的时间,提前谢谢!

我的错误如下:

使用Cell / SetDiff> CellsetDiffr2012A(第292行)错误
输入A类的类双和输入B必须是单元格
字符串,除非是一个字符串。

cell/setdiff错误(第84行)
[varargout {1:nlhs}] = cellsetdiffr2012a(varargin {:});

EPSFIXFONTS(第133行)错误
NeededFonts = setdiff (AllFonts EmbeddedFonts);

EPSWRITE中的错误(第190行)
epsfixfonts(输出文件,embedsymbol);

MyProgramv1_060中的错误(第43行)
emswrite(h,'fig.eps')

Matteo.

嗨Kesh,
我刚给你发了一封邮件,里面有解释和文件。非常非常感谢您的时间!!

Kesh Ikuma

@Matteo - 你还有getallstr()仍然收到错误吗?如果是这样,你能把你的数字发给我,它会产生错误吗?

至于字体“没有很好地复制”:你是在说奇怪的间距吗?如果是这样的话,不幸的是,目前就是这样。

Matteo.

实际上仍然存在错误。;-)
新的eps文件被生成,但字体没有很好地复制。非常感谢您的宝贵时间!

Matteo.

我想出来,非常抱歉;-)
Matteo.

Matteo.

你好,
这个程序看起来很有用,非常感谢!当运行它时,我得到了这个错误:
索引超过矩阵维度。

GetAllstr(第31行)错误
m = [

epsembedfont错误(第170行)
字符串= struct2cell (getallstr (imgdata));

epsfixfonts错误(第158行)
epsembedfont(输出文件,EmbedFontOptions{:},{}):象征;

我是错误的吗?
非常感谢!

Matteo.

巴特

我想分享插图问题的解决方案。我似乎字体被正确嵌入,但是插图者希望使用的字体安装在系统上,以避免具有字体的版权问题。

Kesh Ikuma

@bart - 因为我不使用/有插画家,我无法确认你的问题。我看到它的潜在原因。你能试试这个吗?

1.在文本编辑器中打开test6.eps(您只需使用MATLAB编辑器“编辑Test6.eps”)

2.在第5行左右,你应该看到一行以“%% documentneedfonts:”开头

3.将“%%DocumentNeededFonts:”替换为“%%DocumentFonts:”

4.在Illustrator中保存并打开EPS文件

让我知道这是否有任何区别。谢谢

巴特

Illustrator CS6抱怨缺少CMB10字体

epsembedfont (' test6.eps ', ' +快递= > CMB10 ', ' + Helvetica = > CMB10”,“——全”);

EPSGETFONTS指出CMB10嵌入

我现在正在工作是x86环境。

我的最终目标是嵌入Verdana字体,但我没有成功。

亲切的问候,
巴特

Kesh Ikuma

@bart,是的,matlab(r2013a)无法在64位环境中构建MEX文件。如果您有MS Visual Studio / C ++,则可以使用我的其他提交(//www.tatmou.com/matlabcentral/fileexchange/38720)自己建造它们。

巴特

在Windows x64中,我无法编译encrypt.cpp和decrypt.cpp。

Renwen Lin.

这很棒!

但如何支持中国字体?金宝app

Kesh Ikuma

@CHRIS - 感谢您的反馈。我很惊讶地听到MWA_CMR10-SS无法在Illustrator中找到。“-SS”表示MWA_CMR10字体的必要子集已嵌入在EPS文件中。

此外,您是否尝试使用epsembedfont函数与字体替换功能?例如,EPSEMBEDFONT(EPSFILE,'+ MWA_CMR10 => CMR10',' - 子集')。您必须首先使用epsfontpath将路径包含到CMR10字体。

克里斯托弗本身

嗨Kesh,

优秀的代码。我曾在插画家中获得EPS字体的一个问题。本质上,我缺少了MWA_CMR10-SS和类似字体的错误。我的系统安装了CMR10字体,但不是MWA_CMR10字体。我能够通过从epsfixfonts.mm函数中从字体名称剥离MWA_字符来解决问题。乳胶符号在Illustrator中正确看起来并立即预览。我不确定这是我的系统的具体问题,还是更普遍,但我以为我会告诉你。再次感谢!

Kesh Ikuma

@Brian,哈,我觉得你的名字听起来很熟悉:)

@Jens,听起来您正在使用Matlab图中的“不支持的”乳胶字体。金宝app虽然有几种不同的方式来,但最简单的是以下情况:

1.确定缺少的字体名称及其PFB Type-1字体文件(可能已经在您的系统中或从CTAN服务器下载)

2.将PFB字体文件放在“epsutil / fonts”子目录中。

3.使用"EmbedFonts"="All"选项再次运行epswrite。

或者,您可以使用epsfontpath添加文件夹与PFB文件到EPS工具工具箱的字体搜索路径。

如果您可以通过电子邮件发送给我,我会非常乐意检查(和玩)您的EPS文件(请参阅我的FEX配置文件)。

布莱恩·戈斯

这实际上是@Jens文件(我是来自PXPHelp的Brian g)
我只是想用Illustrator打开他的文件。
这里是字体问题错误信息。

SFRM1000:系统上找不到字体;缺少的字体已被替换。
SFRM1200:在系统中没有找到字体;缺少的字体已被替换。

它可能与未安装CM-Super Font Set的Windows计算机有关。我不确定。

我可以提供其他信息吗?

Kesh Ikuma

@Brian,你能具体说说你的EPS数据是如何生成的吗?是否使用{'EmbedFonts','all'}选项?如果Illustrator继续抱怨,你能告诉我它说缺少了哪些字体吗?谢谢。

布莱恩·戈斯

@kesh和@jens.
我不知道这将有助于,但是当我在Illustrator CS4中打开其中一个数字时,我就可以获得以下字体错误。
SFRM1000:系统上找不到字体;缺少的字体被替换了
SFRM1200:在系统中没有找到字体;缺少的字体被替换了

在这种情况下,字体替换很接近,但并不完美。

Kesh Ikuma

@Jens,谢谢你指出bug。无论出于什么原因(兼容性?),Mathworks根据级别1 (deps)或级别2 (deps2)使用不同的命令填充图形背景。我已经修复了bug,最新的代码将在周一更新。-Kesh

延斯•蒙克汉森

亲爱的Kesh Ikuma

该工具在linux下编译,但我得到以下错误

epsfixbackground.m
???索引超过矩阵维度。

错误==> epsfixbackground 71
figdim = str2num (tok {1});% #好吧

临时的错误修复,为一级后记

(钱数,I1,托托)= regexp (imgdata,“sg \ \ s + 1 \ s + s + 0 \ s + 0 \ s + (\ d + \ s + \ d +) \ s +公关\ s +”,“开始”,“结束”,“令牌”,“一旦”);

/ Jens蒙克汉森

Matlab释放兼容性
用R2014A创建
与任何版本兼容
平台的兼容性
视窗 macOS Linux
致谢

启发:FixpslineStyle.export_fig

社区宝藏狩猎

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!