// 修改文本图层内容的Photoshop脚本
// 用法:在Photoshop中执行此脚本,输入要修改的图层名称和新的文本内容
// 定义一个函数来修改文本图层
function modifyTextLayer(layerName, newText) {
// 获取当前活动文档
var doc = app.activeDocument;
// 遍历所有图层
for (var i = 0; i < doc.layers.length; i++) {
var layer = doc.layers[i];
// 检查图层是否为文本图层并且名称匹配
if (layer.kind == LayerKind.TEXT && layer.name == layerName) {
// 修改文本内容
layer.textItem.contents = newText;
return true;
}
}
return false;
}
// 主函数
function main() {
// 通过对话框获取用户输入
// var layerName = prompt("请输入要修改的文本图层的名称:", "");
// if (layerName == null) {
// return; // 用户取消
// }
var layerName = '文本1'
var newText = 'ssdfe反反复复'
// var newText = prompt("请输入新的文本内容:", "");
// if (newText == null) {
// return; // 用户取消
// }
// 尝试修改文本图层
if (modifyTextLayer(layerName, newText)) {
// alert("文本修改成功!");
} else {
// alert("未找到名为 \"" + layerName + "\" 的文本图层。");
}
}
// 执行主函数
main();
# 核心逻辑:1 ps软件提前录制好动作 执行脚本 存储 关闭; 2 python打开ps软件 触发指定动作处理; 3 通过监听ps当前是否有打开的文档来判断是否处理完成
# 2. 连接Photoshop
try:
app = win32com.client.Dispatch("Photoshop.Application")
app.Visible = True # 显示PS界面(方便观察,可改为False静默运行)
doc = app.Open(psd_path)
time.sleep(3)
custom_log("✅ 成功连接到Photoshop")
except Exception as e:
custom_log(f"❌ 连接Photoshop失败:{str(e)}(请确保PS已安装并正常启动)")
return
app.DoAction("修改文本v1", "默认动作") # 需要提前在ps软件中设置好,脚本执行完直接存储关闭
# 3. 等待处理完毕(监听PS状态)
wait_for_psd_processing(app, psd_name)
def wait_for_psd_processing(app, target_psd_name):
"""
监听Photoshop状态:没有打开的文档识别为执行完成
:param target_psd_name: PSD文件名(含后缀)
"""
start_time = time.time()
while True:
# 检查是否超时
if time.time() - start_time > MAX_TIMEOUT:
raise TimeoutError(f"单个文件处理超时(超过{MAX_TIMEOUT}秒)")
# 1. 检查当前打开的文档数量(处理完后脚本应关闭文档,数量为0)
open_doc_count = app.Documents.Count
if open_doc_count == 0:
custom_log("✅ 当前PSD处理完毕")
return True
else:
time.sleep(CHECK_INTERVAL)