先上代码再做说明
// 批量导出indd文档为PDF(带预设选项)
// 1. 获取所有可用的 PDF 导出预设名称
var presetNames = [];
for (var i = 0; i < app.pdfExportPresets.length; i++) {
presetNames.push(app.pdfExportPresets[i].name);
}
// 如果没有预设,提示用户并退出
if (presetNames.length === 0) {
alert("错误:未找到任何 PDF 导出预设!\n请先在 InDesign 中创建至少一个预设 (文件 > Adobe PDF 预设)。");
exit();
}
// 2. 让用户选择预设
var selectedPresetName = SelectDialog("选择 PDF 导出预设", "请选择用于导出的 PDF 预设:", presetNames);
if (!selectedPresetName) exit(); // 用户取消选择
// 3. 获取预设对象
var pdfPreset = app.pdfExportPresets.itemByName(selectedPresetName);
// 检查预设是否有效
if (!pdfPreset.isValid) {
alert("错误:选择的预设无效!");
exit();
}
// 4. 选择包含ID文档的文件夹
var docFolder = Folder.selectDialog("选择包含 ID 文档的文件夹");
if (!docFolder) exit();
var inddFiles = docFolder.getFiles("*.indd"); // 获取所有.indd 文件
if (inddFiles.length === 0) {
alert("该文件夹中没有找到 .indd 文件。");
exit();
}
// 5. 循环处理文件
var successCount = 0;
for (var k = 0; k < inddFiles.length; k++) {
var inddFile = inddFiles[k];
try {
// 打开文档 (静默打开,不显示界面)
var doc = app.open(inddFile, true);
// 构建 PDF 路径
var pdfPath = new File(inddFile.path + "/" + inddFile.name.replace(/\.indd$/i, ".pdf"));
// 导出 PDF (使用选定的预设)
// 参数说明: exportFile(格式, 文件路径, 显示对话框, PDF预设)
doc.exportFile(ExportFormat.PDF_TYPE, pdfPath, false, pdfPreset);
// 关闭文档 (不保存对原文件的修改)
doc.close(SaveOptions.NO);
successCount++;
} catch (e) {
// 如果出错,尝试关闭文档以防万一,然后继续下一个
try { if (app.documents.length > 0) app.activeDocument.close(SaveOptions.NO); } catch (e2) {}
alert("导出失败: " + inddFile.name + "\n错误信息: " + e.message);
}
}
alert("批量导出完成!\n成功导出: " + successCount + " / " + inddFiles.length + " 个文件。\n使用的预设: " + selectedPresetName);
// --- 辅助函数: 简单的下拉选择对话框 ---
function SelectDialog(dialogTitle, promptText, itemsArray) {
var win = new Window("dialog", dialogTitle);
win.orientation = "column";
win.alignChildren = "fill";
var promptLabel = win.add("statictext", undefined, promptText);
promptLabel.justify = "center";
var list = win.add("dropdownlist", undefined, itemsArray);
list.selection = 0; // 默认选中第一个
var btnGroup = win.add("group");
btnGroup.alignChildren = ["right", "center"];
btnGroup.margins = [0, 10, 0, 0];
var okBtn = btnGroup.add("button", undefined, "确定");
var cancelBtn = btnGroup.add("button", undefined, "取消");
okBtn.onClick = function() { win.close(1); };
cancelBtn.onClick = function() { win.close(0); };
// 双击列表项也确认
list.onChanging = function() {
// 可选:如果需要双击逻辑,可以在这里添加计时器,通常直接点确定即可
};
if (win.show() == 1) {
return list.selection.text;
} else {
return null;
}
}
把以上代码保存成 文件名.jsx 文件,copy到一下目录
| macOS | Users/ [用户名] /Library/Preferences/Adobe InDesign/ [版本] / [语言] /Scripts/Scripts Panel |
|---|---|
| Windows | Users\ [用户名] \AppData\Roaming\Adobe\InDesign\ [版本] \ [语言] \Scripts\Scripts Panel |
找不到目录的,可以在“脚本”tab里右键“用户”,可以查看脚本文件夹位置
在“脚本”tab里双击jsx这个文件,弹出PDF导出预设选择框,没有合适的预设可以先去自定义预设。
在“选择PDF导出预设”窗口选择好后点“确定”,新的窗口中选择一个包含indd文件的文件夹(只处理当前文件夹内的所有indd文件,不会处理子目录),点“打开”。
自动导出PDF就完成了。(・∀・)🎉
关于脚本的详细说明,请看adobe官方文档 helpx.adobe.com/cn/indesign…