Скриптом не стал делать. В принципе там ничего особенного, править размеры имеющихся форматов, либо добавлять свой, по крайне мере вручную я менял и все работало.
По поводу глюков - все работало как по часам, не помню проблем.
Вот скрипт который выводит циан, черный и спот.
За аксиому не принимайте, это я экспериментировал.
JavaScript:
var docRef = activeDocument;
var printFile = new File('d:\printTest.ps');
var myArtboardRange = "1-";
var options = new PrintOptions();
options.printerName = "Adobe PostScript File";
options.PPDName = "Adobe PDF";
var colorOptions = new PrintColorManagementOptions();
colorOptions.name = "Alliance";
colorOptions.intent = PrintColorIntent.PERCEPTUALINTENT;
options.colorManagementOptions = colorOptions;
var postScriptOptions = new PrintPostScriptOptions;
postScriptOptions.binaryPrinting = true;
postScriptOptions.compatibleShading = false;
postScriptOptions.forceContinuousTone = false;
postScriptOptions.imageCompression = PostScriptImageCompressionType.IMAGECOMPRESSIONNONE;
postScriptOptions.negativePrinting = false;
postScriptOptions.postScriptLevel = PrinterPostScriptLevelEnum.PSLEVEL3;
options.postScriptOptions = postScriptOptions;
var myPrintJobOptions = new PrintJobOptions();
myPrintJobOptions.printAllArtboards = false;
myPrintJobOptions.artboardRange = myArtboardRange;
myPrintJobOptions.bitmapResolution = 0;
myPrintJobOptions.collate = false;
myPrintJobOptions.copies = 1;
myPrintJobOptions.printArea = PrintingBounds.ARTBOARDBOUNDS;
myPrintJobOptions.printAsBitmap = false;
myPrintJobOptions.designation = PrintArtworkDesignation.VISIBLEPRINTABLELAYERS;
myPrintJobOptions.reversePages = false;
myPrintJobOptions.file = printFile;
options.jobOptions = myPrintJobOptions;
var flatOpts = new PrintFlattenerOptions();
flatOpts.clipComplexRegions = false;
flatOpts.convertStrokesToOutlines = false;
flatOpts.convertTextToOutlines = false;
flatOpts.overprint = PDFOverprint.PRESERVEPDFOVERPRINT;
flatOpts.GradientResoultion = 300;
flatOpts.RasterizatonResotion = 1200;
flatOpts.flatteningBalance = 100;
options.flattenerOptions = flatOpts;
var fontOpts = new PrintFontOptions();
fontOpts.downloadFonts = PrintFontDownloadMode.DOWNLOADCOMPLETE
fontOpts.fontSubstitution = FontSubstitutionPolicy.SUBSTITUTEOBLIQUE
options.PrintFontOptions = fontOpts;
var pageMarks = new PrintPageMarksOptions;
pageMarks.registrationMarks = false;
options.pageMarksOptions = pageMarks;
var sepOptions = new PrintColorSeparationOptions();
sepOptions.convertSpotColors = false;
sepOptions.overPrintBlack = false;
sepOptions.colorSeparationMode = PrintColorSeparationMode.HOSTBASEDSEPARATION;
var myInk = docRef.inkList;
//myInk[0].inkInfo.kind = InkType.CUSTOMINK
myInk[0].inkInfo.printingStatus = InkPrintStatus.ENABLEINK
myInk[1].inkInfo.kind = InkType.CUSTOMINK
myInk[1].inkInfo.printingStatus = InkPrintStatus.CONVERTINK
myInk[2].inkInfo.kind = InkType.CUSTOMINK
myInk[2].inkInfo.printingStatus = InkPrintStatus.CONVERTINK
//myInk[3].inkInfo.kind = InkType.CUSTOMINK
myInk[3].inkInfo.printingStatus = InkPrintStatus.ENABLEINK
myInk[4].inkInfo.printingStatus = InkPrintStatus.ENABLEINK
//alert(myInk[0].name)
sepOptions.inkList = myInk;
options.colorSeparationOptions = sepOptions;
var coordinateOptions = new PrintCoordinateOptions();
coordinateOptions.emulsion = false;
coordinateOptions.horizontalScale = 100;
coordinateOptions.orientation = PrintOrientation.PORTRAIT;
coordinateOptions.PrintPosition = PrintPosition.TRANSLATECENTER;
coordinateOptions.tiling = PrintTiling.TILESINGLEFULLPAGE;
coordinateOptions.verticalScale = 100;
coordinateOptions.fitToPage = false;
options.coordinateOptions = coordinateOptions;
//var printPaper = new PrintPaperOptions();
//options.paperOptions = printPaper;
//printPaper.name = 'Flex';
app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;
docRef.print(options);
app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS;
colorOptions.name исправьте на свой. Помнится мне, что были проблемы - конвертились цвета.
В итоге я все это бросил и сделал плагин для IDServer, чисто в академических целях

.