使用 javascript 进行操作的自定义菜单 (Acrobat X)
Custom menu (Acrobat X) for action using javascript
我在 Acrobat Pro X 中使用 动作向导 创建了一个动作。
A JavaScript 在动作开始时是 运行。
这个 Javascript 做什么? 假设在打开的 pdf 中有 100 页,这个 javascript 将所有页面提取为单独的页面并将其重命名为用户定义的样式。
例如Hello_001.pdf,Hello_002.pdf,Hello_003.pdf,Hello_004.pdf,...等等,
我想要一个 自定义菜单 以执行此操作为目标。
在我看来,您可以在您提供的 link 中找到答案。重要的是您的 script/function 工作正常。所以之前在js控制台测试一下。但是这里有一个示例,您可以在其中用您的脚本替换脚本。此致,莱因哈德
编辑:(25.11.) 以为可以自己使用它,但后来我想让它排序。所以我在提取文件名中引入了前导零 - >功能改变了。
//Save this in the ....\Acrobat\Javascripts\ program or user directory
// as whatever.js to load as Add-In
//-> create a submenu as first position under "Edit"
app.addSubMenu({ cName: "Specials", cParent: "Edit", nPos: 0 });
//-> now create a Menuitem for the function you will execute
app.addMenuItem({ cName: "Extract all Pages to file", cParent: "Specials", cExec: "extractAll()"});
//-> state your function (extract all Pages with leading zeros)
extractAll = app.trustedFunction(function (){
var re = /.*\/|\.pdf$/ig;
var filename = this.path.replace(re,"");
var lastPage = this.numPages;
var lz = Math.pow(10, (lastPage).toString().length); //calc full decimals (10,100,..)
app.beginPriv(); // Explicitly raise privilege
for ( var i = 0; i < lastPage; i++ ) {
var zPgNo = (lz + i+1).toString().slice(1); //calc actual, cut leading 1 = zerofilled PgNo
this.extractPages({
nStart: i,
nEnd: lastPage -1,
cPath : filename + "_page_" + zPgNo + ".pdf"
});
};
app.endPriv();
app.alert("Done!");
})
您无法从菜单项触发 运行 的操作。但是,您可以创建一个应用程序级别 JavaScript,其中包含一个函数来执行您想要的操作,然后从 Acrobat 动作或自定义菜单项或两者调用该函数。 ReFran 的回答显示了如何添加自定义菜单项。
我在 Acrobat Pro X 中使用 动作向导 创建了一个动作。
A JavaScript 在动作开始时是 运行。
这个 Javascript 做什么? 假设在打开的 pdf 中有 100 页,这个 javascript 将所有页面提取为单独的页面并将其重命名为用户定义的样式。
例如Hello_001.pdf,Hello_002.pdf,Hello_003.pdf,Hello_004.pdf,...等等,
我想要一个 自定义菜单 以执行此操作为目标。
在我看来,您可以在您提供的 link 中找到答案。重要的是您的 script/function 工作正常。所以之前在js控制台测试一下。但是这里有一个示例,您可以在其中用您的脚本替换脚本。此致,莱因哈德
编辑:(25.11.) 以为可以自己使用它,但后来我想让它排序。所以我在提取文件名中引入了前导零 - >功能改变了。
//Save this in the ....\Acrobat\Javascripts\ program or user directory
// as whatever.js to load as Add-In
//-> create a submenu as first position under "Edit"
app.addSubMenu({ cName: "Specials", cParent: "Edit", nPos: 0 });
//-> now create a Menuitem for the function you will execute
app.addMenuItem({ cName: "Extract all Pages to file", cParent: "Specials", cExec: "extractAll()"});
//-> state your function (extract all Pages with leading zeros)
extractAll = app.trustedFunction(function (){
var re = /.*\/|\.pdf$/ig;
var filename = this.path.replace(re,"");
var lastPage = this.numPages;
var lz = Math.pow(10, (lastPage).toString().length); //calc full decimals (10,100,..)
app.beginPriv(); // Explicitly raise privilege
for ( var i = 0; i < lastPage; i++ ) {
var zPgNo = (lz + i+1).toString().slice(1); //calc actual, cut leading 1 = zerofilled PgNo
this.extractPages({
nStart: i,
nEnd: lastPage -1,
cPath : filename + "_page_" + zPgNo + ".pdf"
});
};
app.endPriv();
app.alert("Done!");
})
您无法从菜单项触发 运行 的操作。但是,您可以创建一个应用程序级别 JavaScript,其中包含一个函数来执行您想要的操作,然后从 Acrobat 动作或自定义菜单项或两者调用该函数。 ReFran 的回答显示了如何添加自定义菜单项。