需求
工作目录下有一个psd文件和一个dzjgh.txt文件,其中psd文件中有一个名为“dzjgh"的文本图层,dzjgh.txt文件中包含了若干电子监管号字符串,每行一个。读取txt文件中的电子监管号,然后替换psd文件dzjgh图层的内容,并导出png图片,图片名称为”电子监管号.png“。
代码
// ==============================================
// Photoshop 26.0批量替换文本图层并导出PNG脚本
// 功能:读取TXT文件内容→替换指定图层文本→导出PNG
// ==============================================
// --------------------------
// 步骤1:环境检查与初始化
// --------------------------
if (app.documents.length === 0) {
alert("请先打开目标PSD文件!");
exit(); // 无打开文档时终止脚本
}
var doc = app.activeDocument;
// alert(doc.layers.length)
var psdFilePath="C:\\Users\\ljt\\png\\u.psd";
var txtFilePath=new File("C:\\Users\\ljt\\png\\dzjgh.txt");
var pngFolder="C:\\Users\\ljt\\png\\Export";
// 检查TXT文件是否存在
if (!txtFilePath.exists) {
alert("未找到dzjgh.txt文件!");
exit();
}
// --------------------------
// 步骤2:读取TXT文件中的电子监管号(修正版)
// --------------------------
txtFilePath.open("r"); // 以只读模式打开TXT
var codeList = []; // 存储所有监管号的数组
var line;
// 逐行读取TXT内容(修正:先读取行,再判断有效性)
while (!txtFilePath.eof) {
line = txtFilePath.readln(); // 先读取一行(不直接调用trim())
if (line !== "") codeList.push(line); // 非空行添加到数组
}
txtFilePath.close(); // 关闭文件
// --------------------------
// 步骤3:定位名称为“dzjgh”的文本图层
// --------------------------
var targetLayer = null; // 目标文本图层对象
// 遍历所有图层,查找名称为“dzjgh”的文本图层
for (var i = 0; i < doc.layers.length; i++) {
var layer = doc.layers[i];
// 条件:图层名称匹配 + 图层类型为文本图层
if (layer.name === "dzjgh" && layer.kind === LayerKind.TEXT) {
targetLayer = layer;
break; // 找到后退出循环
}
}
// 检查是否找到目标图层
if (!targetLayer) {
alert("未找到名称为'dzjgh'的文本图层,请检查图层名称是否正确!");
exit();
}
// --------------------------
// 步骤4:循环替换文本并导出PNG
// --------------------------
var exportOptions = new ExportOptionsSaveForWeb(); // 创建导出配置对象
// 设置PNG导出参数(可根据需求调整)
exportOptions.format = SaveDocumentType.PNG; // 格式为PNG
exportOptions.PNG8 = false; // 使用PNG-24(支持透明度)
exportOptions.transparency = true; // 保留透明背景
exportOptions.quality = 100; // 图像品质(0-100)
exportOptions.interlaced = false; // 非交错PNG
// 遍历每个监管号,执行替换和导出
for (var i = 0; i < codeList.length; i++) {
var currentCode = codeList[i]; // 当前监管号
// ① 替换文本图层内容
targetLayer.textItem.contents = currentCode; // 直接修改文本内容
// ② 导出PNG文件(文件名=监管号,保存到PSD同目录)
var exportFile = new File(pngFolder + "/" + currentCode + ".png");
doc.exportDocument(exportFile, ExportType.SAVEFORWEB, exportOptions);
// 进度提示(可选)
$.writeln("已导出:" + currentCode + ".png"); // 在PS脚本控制台输出进度
}
alert("批量处理完成!共导出 " + codeList.length + " 个PNG文件。");操作步骤
保存脚本文件。将上述代码另存为”批量替换导出.jsx“,与psd、txt统一目录,编码UTF-8。
打开PSD文件。确保目标PSD文件已大开,且"dzjgh"文本图层可见、可编辑。
运行javascript脚本。打开ps菜单:文件-脚本-浏览,选择”批量替换导出.jsx“。