我正在尝试使用Javascript在Illustrator中保存文件,但我一直收到错误。
这是有效的,但不是我想要的:
// save as
var dest = "~/testme.pdf";
saveFileToPDF(dest);
function saveFileToPDF (dest) {
var doc = app.activeDocument;
if ( app.documents.length > 0 ) {
var saveName = new File ( dest );
saveOpts = new PDFSaveOptions();
saveOpts.compatibility = PDFCompatibility.ACROBAT5;
saveOpts.generateThumbnails = true;
saveOpts.preserveEditability = true;
alert(saveName);
doc.saveAs( saveName, saveOpts );
}
}
var“dest”将文件保存到我的Mac用户帐户的根目录。我只想将文件相对于源文档保存在子文件夹中,所以我尝试了这个:
var dest = "exports/testme.pdf";
这会突出显示“.pdf”对话框,正确等待我已创建的“exports”文件夹中的输入。我可以键入一些内容并保存,但它会忽略代码中指定的文件名“testme.pdf”。我可以在它知道我想要的突出显示的“.pdf”上键入“cheese”,它会将“cheese.pdf”保存在“exports”文件夹中。
我也试过这些没有运气:
var dest = "exports/testme";
var dest = "/exports/testme.pdf";
var dest = "testme.pdf";
等等。
我错过了什么?
答案 0 :(得分:5)
要在没有弹出对话框的情况下使用saveAs
,您需要使用全局属性userInteractionLevel
:
var originalInteractionLevel = userInteractionLevel;
userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
...
userInteractionLevel = originalInteractionLevel;
答案 1 :(得分:0)
由于您希望相对于文档进行保存,因此首先要查找当前文档的路径,如下所示
var path = app.activeDocument.path;
var dest = path + "/exports/testme.pdf";
您还可以检查导出文件夹是否存在,否则您可以使用脚本创建,如下所示
var path = app.activeDocument.path;
var exportFolder = Folder(path + "/exports");
if(!exportFolder.exists){
exportFolder.create();
}
var dest = exportFolder + "/testme.pdf";