[AI CC-CC2021] Задать область печати

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Всем привет, как задать область печати ? Руками её можно задать с помощью инструмента Print Tiling Tool.

диалог настройки печати:
1592730191429.png


мне нужно скриптом выводить сепарации в .ps по размеру красок макета по тех. меткам.

Скрипт выделит одни метки, задаст поле печати, запишет ps, выделит вторые метки, задаст поле печати и т.д.

Кстати, помню что команда оключения сепараций не работала в скриптинге inkprintstatus.disableINK, есть какие-то новые решения для этого ?

Как вариант - убрать лишние краски перед выводом в макете, как это сделать скриптом безе перекрашивания всех объектов ?

Додумался только до временной разбивки через Pathfinder.
 
Последнее редактирование:

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196

Не по теме:
Я вот щас Action записал и увидел что принтовкой занимается "ai11_print_plugin", т.е. ничего не изменилось с 11 версии - предоставленные разработчиками элементы управления скорее всего так и не работают
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 203
Реакции
10 848
Иллюстраторовские индусы весьма консервативны.
Вообще говоря, было бы удивительно, чтобы чтото допиливали - постскрипт это ж вредоносный атавизм.
Проще всего, наверное, кидать все сепарации, а потом скриптом полученный файл делить на части, но не факт что корректно получится :(
 

Chiga

15 лет на форуме
Сообщения
800
Реакции
519
Кстати, помню что команда оключения сепараций не работала в скриптинге inkprintstatus.disableINK, есть какие-то новые решения для этого ?
Я в свое время тоже заморачивался подобной задачей, работало как-то так:

JavaScript:
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.CONVERTINK
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
//alert(myInk[0].name)
sepOptions.inkList = myInk;
options.colorSeparationOptions = sepOptions;

Подробностей не помню, но можно разобраться.

А вот с Media Size была полная засада, из скрипта можно было писать только на предустановленные размеры из *.PPD, игнорирует иллюстратор Custom size. Была мысль редактировать .PPD "на лету" - тоже вроде решаемая задача.
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Я в свое время тоже заморачивался подобной задачей, работало как-то так:

JavaScript:
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.CONVERTINK
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
//alert(myInk[0].name)
sepOptions.inkList = myInk;
options.colorSeparationOptions = sepOptions;

Подробностей не помню, но можно разобраться.

А вот с Media Size была полная засада, из скрипта можно было писать только на предустановленные размеры из *.PPD, игнорирует иллюстратор Custom size. Была мысль редактировать .PPD "на лету" - тоже вроде решаемая задача.


работает с ограничением - не могу настроить вывод пантонов, вываливается ошибка.

рабочий код для CMYK:

JavaScript:
var doc = activeDocument;

var printJobOptions= new PrintJobOptions();
var options = new PrintOptions();

      options.jobOptions = printJobOptions;

var sepOptions = new PrintColorSeparationOptions();

    sepOptions.convertSpotColors = false;
    sepOptions.overPrintBlack = false;
    sepOptions.colorSeparationMode = PrintColorSeparationMode.HOSTBASEDSEPARATION;

var myInk = doc.inkList;

myInk[0].inkInfo.kind = InkType.CUSTOMINK;
myInk[0].inkInfo.printingStatus = InkPrintStatus.CONVERTINK;
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;

sepOptions.inkList = myInk;
options.colorSeparationOptions = sepOptions;

doc.print ( options );


по поповоду редактировать .PPD "на лету" есть наработки ?

p.s. по скриптам печати заметил такой глюк - рабочий код правишь, правишь и он выдаёт ошибки, возвращаешь до рабочего состояния но код уже не работает, приходится перезапускать иллюстратор, тогда код снова работает.
 

~RA~

Одарённая.
12 лет на форуме
Сообщения
11 862
Реакции
3 450
Я не уверен, что вполне понял, что вы хотите, но триминг постскрипта не решит вашу задачу хотя бы частично?
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
рабочий код правишь, правишь и он выдаёт ошибки, возвращаешь до рабочего состояния но код уже не работает, приходится перезапускать иллюстратор, тогда код снова работает

это не то что глюк. висит что-то определенное до того в сессии.
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Я не уверен, что вполне понял, что вы хотите, но триминг постскрипта не решит вашу задачу хотя бы частично?
расскажите пжлста про тримминг, может пригодится. В данном случае хотелось бы писать файл в один приём, с триммингом думаю это будет в два.
 

Chiga

15 лет на форуме
Сообщения
800
Реакции
519
по поповоду редактировать .PPD "на лету" есть наработки ?
Скриптом не стал делать. В принципе там ничего особенного, править размеры имеющихся форматов, либо добавлять свой, по крайне мере вручную я менял и все работало.
По поводу глюков - все работало как по часам, не помню проблем.
Вот скрипт который выводит циан, черный и спот.
За аксиому не принимайте, это я экспериментировал.

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, чисто в академических целях '%)'.
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
Скриптом не стал делать. В принципе там ничего особенного, править размеры имеющихся форматов, либо добавлять свой, по крайне мере вручную я менял и все работало.
По поводу глюков - все работало как по часам, не помню проблем.
Вот скрипт который выводит циан, черный и спот.
За аксиому не принимайте, это я экспериментировал.

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, чисто в академических целях '%)'.
что значит

var myArtboardRange = "1-"; ?
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
всё-таки прошу помочь разобраться с записью пантонов, сам не справляюсь.

p.s. может быть есть умельцы дописать DOM для илла под настройки печати ? видел такое для блидов, оказалось они тоже не поддерживаются родным javascript.
 
Последнее редактирование:

romaya

10 лет на форуме
Сообщения
317
Реакции
40
Тоже было бы интересно увидеть решение.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 203
Реакции
10 848

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 203
Реакции
10 848

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 203
Реакции
10 848
То есть я правильно вас понимаю, вы хотите, чтобы кто-то запилил с нуля на сиплюсплюс свою собственную реализацию печати с цветоделением и доступом туда из javascript? '8()'
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
То есть я правильно вас понимаю, вы хотите, чтобы кто-то запилил с нуля на сиплюсплюс свою собственную реализацию печати с цветоделением и доступом туда из javascript? '8()'
простите, что??? нет, конечно. Хочу чтобы кто-то написал плагин с функциями печати, которые не доступны через javascript. Например, задать размер листа - media size, выбрать какие краски будут писаться в .ps и тд.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 203
Реакции
10 848
простите, что??? нет, конечно. Хочу чтобы кто-то написал плагин с функциями печати, которые не доступны через javascript. Например, задать размер листа - media size, выбрать какие краски будут писаться в .ps и тд.
Ну так это одно и тоже. У вас же нет исходного кода на сиплюсплюс модуля печати, чтоб простл поправить что надо и перекомпилить не так ли? А значит или реверсировать код (что как я понимаю, не сильно одобряется правовым законодательством) или с нуля писать этот модуль печати, что, учитывая все нюансы, фактически, равноценно написанию собственного иллюстратора