备注:需要与上篇文章结合使用,先提取,再更改;csv文件运行脚本后可见。
灵感源于解决ai文件的翻译而来,可用于单独文件的翻译或批量文件的翻译。
- 单独文件的翻译源码:
var file = File('~/Desktop/groups.csv');
if (file.exists) {
file.open('r');
while (!file.eof) {
var doc = app.activeDocument; // 获取当前文档
var layers = doc.layers; // 获取文档中的所有图层
for (var i = 0; i < layers.length; i++) { // 遍历所有图层
var layer = layers[i];
var textFrames = layer.textFrames; // 获取图层中的所有文本框对象
for (var k = 0; k < textFrames.length; k++) { // 遍历所有文本框
var textFrame = textFrames[k];
var line = file.readln(); // 读取一行
var parts = line.split("\t");
textFrame.contents=parts[1];
}
}
doc.save();
doc.close();
}
file.close(); // 关闭文件
}
alert("干的漂亮!文本提取完本!")
多文件的翻译源码:
var fileT = File('~/Desktop/groups.csv'); // 指定要读取的文本文件路径
//var fileLines = [];
if (fileT.exists) {
fileT.open('r');
while (!fileT.eof) {
//fileLines.push(line); // 将读取的行存储到数组中
var folder = Folder.selectDialog ("请选择需要处理的ai文件夹")
var files = folder.getFiles("*.ai");
for (var n = 0; n< files.length; n++) {
var file = files[n];
if (file instanceof File && file.name.match(/\.ai$/i)) {
var doc = app.open(file);
//var doc = app.activeDocument; // 获取当前文档
var layers = doc.layers; // 获取文档中的所有图层
for (var i = 0; i < layers.length; i++) { // 遍历所有图层
var layer = layers[i];
var textFrames = layer.textFrames; // 获取图层中的所有文本框对象
for (var k = 0; k < textFrames.length; k++) { // 遍历所有文本框
var textFrame = textFrames[k];
var line = fileT.readln(); // 读取一行
var parts = line.split("\t");
textFrame.contents=parts[1];
}
}
doc.save();
doc.close();
}
}
fileT.close(); // 关闭文件
}
}
alert("干的漂亮!翻译完成!")