QQ登录

只需一步,快速开始

查看: 11025|回复: 4
收起左侧

C#调用Illustrator CS4生成系统所有字体列表并保存为AI文件

[复制链接]
累计签到:79 天
连续签到:1 天
发表于 2016-12-6 10:18:29 | 显示全部楼层 |阅读模式

本文的重点在于如何取得字体列表,如何对文字输出的格式、大小进行控制,最后又是如何保存为Illustrator的不同版本的。

先看运行之后的效果图:

C#调用Illustrator CS4生成系统所有字体列表并保存为AI文件{tag}(1)
                               
登录/注册后可看大图

下面看看C#处理的代码:

private void btnChangeWords_Click(object sender, EventArgs e)
        {
            Illustrator.Application app = new Illustrator.Application();

            // 文档的尺寸,Illustrator默认为以Point(磅)为单位,所以下面的涉及尺寸度量的,都是Point为单位。做过印刷或广告的朋友应该知道,72Points=1英寸,即2.54cm。
            double myWidth = 888.0;
            double myHeight = 400.0;
            Illustrator.Document docRef = app.Documents.Add(null, myWidth, myHeight, null, null, null, null);

            // 边距
            double edgeSpacing = 14;

            // 栏间距
            double columnSpacing = 268;
            double x = edgeSpacing;
            double y = docRef.Height - edgeSpacing;
            double iCounter = 0;
            try
            {

                // 这里通过Illustrator.Application的实例app的TextFonts找到所有字体列表
                foreach (Illustrator.TextFont fontRef in app.TextFonts)
                {

                    // 通过Document实例的TextFrames.Add()方法增加文字
                    Illustrator.TextFrame textRef = docRef.TextFrames.Add();

                    // 文字的大小
                    textRef.TextRange.CharacterAttributes.Size = 14;

                    // 文字的内容
                    textRef.Contents = fontRef.Name + " | " + fontRef.Style.ToString();
                    textRef.Top = y; //垂直方向的位置
                    textRef.Left = x; //水平方向的位置

                    // 如果大于文档尺寸,则不输出,主要目的是想叙述控制的方法
                    if ((x + textRef.Width) > docRef.Width)
                    {
                        textRef.Delete();
                        continue;
                    }

                    // 设置字体
                    textRef.TextRange.CharacterAttributes.TextFont = app.TextFonts[fontRef.Name];

                    // 控制输出的总高度
                    y = y - textRef.Height;
                    if (y < 28)
                    {
                        y = docRef.Height - edgeSpacing;
                        x = x + columnSpacing;
                    }
                    iCounter = iCounter + 1;

                    // 这里只列出60条,如果需要更多,可以修改下句代码
                    if (iCounter > 60) break;
                }
            }
            catch (Exception excOuter)
            {
                excOuter = null;
            }

            // AI格式文档保存选项

            Illustrator.IllustratorSaveOptions saveOptions = new Illustrator.IllustratorSaveOptions();
            saveOptions.Compatibility = Illustrator.AiCompatibility.aiIllustrator11;//设置保存文件的版本,比如你可以使用aiIllustrator8等。
            saveOptions.FlattenOutput = Illustrator.AiOutputFlattening.aiPreserveAppearance;
           // 保存AI文件
           docRef.SaveAs(@"F:/Johnson/IllustratorDemo/Fonts.ai", saveOptions);
           docRef = null;
        }



评分

参与人数 1印币 +30 收起 理由
admin + 30 感谢分享优秀资源,华印有你更精彩!

查看全部评分

华印网相关搜索

累计签到:205 天
连续签到:1 天
发表于 2016-12-6 10:56:38 | 显示全部楼层
要不,你用C#帮我把一个脚本写成按钮吧,,,
回复 支持 反对 送花

使用道具 举报

累计签到:323 天
连续签到:2 天
发表于 2016-12-6 12:36:40 | 显示全部楼层
楼主果然厉害,是个编程高手
回复 支持 反对 送花

使用道具 举报

累计签到:527 天
连续签到:1 天
发表于 2016-12-6 17:04:20 | 显示全部楼层
感谢分享!华印论坛有了CORELDRAW cpg编程框架,现在又有了,AI的教程。赞!
回复 支持 反对 送花

使用道具 举报

累计签到:552 天
连续签到:0 天
发表于 2016-12-6 22:17:18 来自手机 | 显示全部楼层
高人啊,编成插件可能更好
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

注意注意注意:必看上一条 /1 下一条

华印网 - 华印社区
Share More 周一至周日:09:00 - 21:00
华印网旗下的设计印刷制作类专业技术站点
请勿发布违反国家法律法规的内容,会员观点不代表本站立场
企鹅群号:119572101

华印网汇集印前印后技术、PDF拼版、防伪包装、数码印刷、合版印刷、图文设计、平面设计、数码印刷及CTP等最新印刷技术,提供软件汉化、插件汉化、cdr插件、ai插件、ps插件、pdf插件、印刷流程、ctp输出、印刷软件、印能捷、esko、CorelDRAW、InDesign、Illustrator、CTP、CDR以及PDF软件下载的综合性印刷论坛社区!

Powered by Discuz! X3.4 © 2001-2021,Tencent Cloud.

站点地图|小黑屋|手机版|Archiver|华印 ( 粤ICP备19020152号-1 )

GMT+8, 2024-11-22 14:42 , Processed in 0.037346 second(s), 24 queries , Gzip On, Yac On.

快速回复 返回顶部 返回列表