蚀刻先锋 发表于 2016-12-6 10:18:29

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


本文的重点在于如何取得字体列表,如何对文字输出的格式、大小进行控制,最后又是如何保存为Illustrator的不同版本的。先看运行之后的效果图:http://p.blog.csdn.net/images/p_blog_csdn_net/johnsuna/EntryImages/20090104/Fonts.png下面看看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;                  // 控制输出的总高度
                  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;
      }

BIN 发表于 2016-12-6 10:56:38

要不,你用C#帮我把一个脚本写成按钮吧,,,

yhsza 发表于 2016-12-6 12:36:40

楼主果然厉害,是个编程高手

asong 发表于 2016-12-6 17:04:20

感谢分享!华印论坛有了CORELDRAW cpg编程框架,现在又有了,AI的教程。赞!

no543216789 发表于 2016-12-6 22:17:18

高人啊,编成插件可能更好
页: [1]
查看完整版本: C#调用Illustrator CS4生成系统所有字体列表并保存为AI文件