我们有数百个使用需要更改的字体的Illustrator文件。我可以在Notepad++中打开Illustrator文件,搜索有问题的字体并将其替换为新字体。然后,使用正确的字体在Illustrator中打开该文件而不会出现问题。
我正在尝试编写一些C#代码来自动完成此操作,但Illustrator声称生成的文件已损坏。
我认为这是由于文件的编码造成的,所以我尝试了用各种不同的编码来读写文件,结果基本上是一样的。文件要么根本打不开,要么是空白白页。无论哪种方式,Illustrator都表示文件已损坏。
经过几次修改后,下面是我现在的代码:
public void RenameFont()
{
DirectoryInfo directory = new DirectoryInfo(Common.SOURCE_FOLDER);
FileInfo[] files = directory.GetFiles("*.ai", SearchOption.TopDirectoryOnly);
foreach (FileInfo file in files)
{
string fileName = file.Name.Replace(".ai", "");
if (int.TryParse(fileName, out int itemNumber))
{
using (FileStream fs = file.OpenRead())
using (StreamReader reader = new StreamReader(fs, Encoding.GetEncoding(1252)))
{
string line;
using (StreamWriter writer = new StreamWriter(File.Open(Path.Combine(file.DirectoryName, $"new{file.Name}"), FileMode.Create), Encoding.GetEncoding(1252)))
{
while ((line = reader.ReadLine()) != null)
{
foreach (string badFont in Common.SEARCH_FOR)
{
if (line.Contains(badFont))
{
line = line.Replace(badFont, Common.REPLACE_WITH);
}
}
writer.WriteLine(line);
}
writer.Flush();
writer.Close();
}
reader.Close();
}
}
}
}即使我只读写文件而不修改字体名称,结果仍然是一样的。
编辑:我最后使用了Notepad++的“在文件中查找”功能来替换文本。它在不到一分钟的时间内处理了所有的文件,它们都在Illustrator中打开,没有问题。
发布于 2020-10-08 02:23:24
一个grep工具可以更可靠、更容易地完成这项任务。不要重复发明轮子- ADyson
虽然grep工具是一个很好的想法(我仍然不知道为什么我没有想到它)。我意识到Notepad++有一个在文件中查找的功能,可以为我做文本替换。
我让它遍历了文件夹中的所有文件,并在需要的地方进行了查找/替换。只用了不到一分钟,一切都运行得很好。
https://stackoverflow.com/questions/64247760
复制相似问题