如何编写Acrobat Javascript代码提取指定文本并自动将PDF另存为对应文件名?
Acrobat JavaScript 自动提取OCA编号并重命名保存脚本
本脚本为文件夹级(Folder Level)脚本,可自动读取PDF第一页内容匹配OCA/后的12位规则字符,完成匹配后自动以「12位字符+MISC」为文件名执行保存操作。
完整脚本代码
// 自定义菜单项注册 app.addMenuItem({ cName: "提取OCA编号并保存", cParent: "工具", cExec: "extractOCASave()", cEnable: "event.rc = (app.activeDocs.length > 0);" }); // 核心处理函数 function extractOCASave() { try { const activeDoc = app.activeDocs[0]; const firstPageWordCount = activeDoc.getPageNumWords(0); // 匹配规则:OCA/开头后接12位字符,第2、3位固定为连字符 const ocaMatchReg = /OCA\/(.{12})/; let targetOcaCode = ""; // 遍历第一页所有单词查找匹配项 for (let i = 0; i < firstPageWordCount; i++) { const currentWord = activeDoc.getPageNthWord(0, i, false); const matchResult = currentWord.match(ocaMatchReg); if (matchResult && matchResult[1].length === 12) { // 校验第2、3位是否为连字符 if (matchResult[1].charAt(1) === "-" && matchResult[1].charAt(2) === "-") { targetOcaCode = matchResult[1]; break; } } } if (!targetOcaCode) { app.alert("未在PDF第一页检索到符合规则的OCA编号", 3); return; } const newFileName = `${targetOcaCode} MISC.pdf`; let saveFullPath; // 处理保存路径 if (activeDoc.path) { // 原文件已存在路径,默认保存在同目录 const originalDir = activeDoc.path.substring(0, activeDoc.path.lastIndexOf("/") + 1); saveFullPath = `${originalDir}${newFileName}`; } else { // 原文件未保存,弹窗让用户选择保存目录 const selectedDir = app.browseForSave("请选择文件保存目录"); if (!selectedDir) return; saveFullPath = `${selectedDir}/${newFileName}`; } activeDoc.saveAs(saveFullPath); app.alert(`文件已成功保存为:${newFileName}`, 3); } catch (error) { app.alert(`操作执行失败,错误信息:${error.message}`, 3); } }
安装使用步骤
- 打开Acrobat对应的JavaScript文件夹,不同系统默认路径如下:
- Windows:
C:\Program Files\Adobe\Acrobat DC\Acrobat\Javascripts - MacOS:
/Applications/Adobe Acrobat DC/Adobe Acrobat.app/Contents/Resources/JavaScripts
- Windows:
- 新建空白文本文件,将上述代码完整复制粘贴到文件内
- 将文件重命名为
OCA_Rename.js,注意必须修改后缀为.js,不能保留.txt后缀 - 完全关闭Acrobat软件后重新打开,顶部「工具」菜单下会出现「提取OCA编号并保存」的功能选项
- 打开需要处理的PDF文件,点击该菜单项即可自动执行识别、重命名、保存流程
注意事项
- 仅识别PDF第一页的OCA编号,匹配规则严格校验12位字符的第2、3位为连字符,不符合规则的内容不会被提取
- 若处理的是未手动保存过的新建PDF,会弹出对话框让你手动选择保存目录
- 脚本仅执行另存为操作,不会修改原PDF文件内容
内容的提问来源于stack exchange,提问作者dpoag
相关产品推荐
相关产品推荐

