не срабатывает InkPrintStatus.DISABLEINK (сепарации в CS6)

  • Автор темы Автор темы dumbm1
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

dumbm1

Топикстартер
12 лет на форуме
Сообщения
423
Реакции
197
Всем добрый день!
Конфигурация: Win7 Pro x64, Иллюстратор CS6x64, принтер по-умолчанию PDF. Тестовый скрипт печати сепараций:
PHP:
var adoc = activeDocument;

var o = new PrintOptions();
o.colorSeparationOptions = new PrintColorSeparationOptions();
o.colorSeparationOptions.colorSeparationMode = PrintColorSeparationMode.HOSTBASEDSEPARATION;
o.colorSeparationOptions.inkList = adoc.inkList;

for (var i = 0; i < o.colorSeparationOptions.inkList.length; i++) {
 if (o.colorSeparationOptions.inkList[i].name == 'Process Cyan') {
  o.colorSeparationOptions.inkList[i].inkInfo.printingStatus = InkPrintStatus.DISABLEINK;
 }
}
adoc.print(o);
Почему Cyan все равно вылезает? (Значение при этом меняется на "InkPrintStatus.DISABLEINK")
Проверил в CS4 - печатает как задумано, без циана.
Как в этом случае можно отключить Cyan, кто знает или догадывается?
Спасибо )
 
Точно меняется? Вы точно проверяли, перед print оно стоит в DISABLEINK? Я к тому, что, может, в CS6 сепарация как то по другому называется? Попробуйте тупо inkList[0].inkInfo.printingStatus = InkPrintStatus.DISABLEINK поставить - что будет?
 
  • Спасибо
Реакции: Linxy
Точно меняется, проверяю алертом и в extend script toolkit; как будто значение упорно берется из Document.inkList.inkInfo.
Тупое inkList[0].inkInfo.printingStatus = InkPrintStatus.DISABLEINK меняет значение, но циан вылезает.
+ еще глюк - при удалении пантонов из макета с последующим перезапуском Иллюстратора пантоны вылезают при печати сепараций скриптом (пустые страницы); продолжая присутствовать в Document.inkList.inkInfo со значением printingStatus = InkPrintStatus.ENABLEINK
Ерунда какая-то %)
 
да, все верно. CS6
PHP:
For Each myInk In AiApp.ActiveDocument.InkList
                If myInk.Name = "inkName" Then
                     myInk.InkInfo.PrintingStatus = AiInkPrintStatus.aiEnableInk
                Else
                     myInk.InkInfo.PrintingStatus = AiInkPrintStatus.aiDisableInk
                 End If
                      MsgBox(myInk.Name & vbNewLine & myInk.InkInfo.PrintingStatus)
             Next
значения PrintingStatus изменяются а в печать всё подряд летит....
мозг вскипел уже...
 
казалось бы....
однако если проверять не там же в цикле где значения меняешь , то видно что ничего не меняется...
PHP:
                        For Each myInk In AiApp.ActiveDocument.InkList
                            If myInk.Name <> GridPrint2.Rows(i - 1).Cells(4).Value Then
                                myInk.InkInfo.PrintingStatus = AiInkPrintStatus.aiDisableInk
                            Else
                                myInk.InkInfo.PrintingStatus = AiInkPrintStatus.aiEnableInk
                            End If
                         Next

                        For Each myInk In AiApp.ActiveDocument.InkList
                             MsgBox(myInk.Name & vbNewLine & myInk.InkInfo.PrintingStatus)
                        Next

вопрос: так как же выключить\включить краску ,
media size выбрать costom size ??
 
Последнее редактирование:
А Вы проверяете значения в документе или в своём объекте, где меняли значения?
Да, в документе цвет всегда остается как-бы "включенным" по-умолчанию. Так и в CS4,если проверить.
Но печатаем мы со своими настройками, а не с теми, которые в документе по-умолчанию. По-моему так.
Вот та же шняга код с комментами, который правильно работает в CS4 но глючит в SC6 и СС:
PHP:
var adoc = activeDocument;

var o = new PrintOptions();
o.colorSeparationOptions = new PrintColorSeparationOptions();
o.colorSeparationOptions.colorSeparationMode = PrintColorSeparationMode.HOSTBASEDSEPARATION;
o.colorSeparationOptions.inkList = adoc.inkList;

// отключение Process Cyan
for (var i = 0; i < o.colorSeparationOptions.inkList.length; i++) {
  if (o.colorSeparationOptions.inkList[i].name == 'Process Cyan') {
    o.colorSeparationOptions.inkList[i].inkInfo.printingStatus = InkPrintStatus.DISABLEINK;
  }
}
// проверка
var inkStatusList = '';
for (var i = 0; i < o.colorSeparationOptions.inkList.length; i++) {
  inkStatusList += o.colorSeparationOptions.inkList[i].name + ': ' +
    o.colorSeparationOptions.inkList[i].inkInfo.printingStatus + '\n';
}
alert(inkStatusList); // Process Cyan InkPrintStatus.DISABLEINK

adoc.print(o); // Process Cyan НЕ печатается

// снова берем и присваиваем значения inkList из документа
o.colorSeparationOptions.inkList = adoc.inkList;

// проверка
var inkStatusList = '';
for (var i = 0; i < o.colorSeparationOptions.inkList.length; i++) {
  inkStatusList += o.colorSeparationOptions.inkList[i].name + ': ' +
    o.colorSeparationOptions.inkList[i].inkInfo.printingStatus + '\n';
}
alert(inkStatusList); // Process Cyan InkPrintStatus.ENEBLEINK
media size при чем?
 
Последнее редактирование:
по моему это просто ошибка. хотя почему и через vb и js один и тот же глюк? пора звонить в адоб ;)
 
странно конечно...
PHP:
myPrintOpTions.myColorSeparationOptions.InkList = AiApp.ActiveDocument.InkList

                    For Each myInk In myPrintOpTions.myColorSeparationOptions.InkList
                        If myInk.Name <>"inkName" Then
                            myInk.InkInfo.PrintingStatus = AiInkPrintStatus.aiDisableInk
                        Else
                            myInk.InkInfo.PrintingStatus = AiInkPrintStatus.aiEnableInk
                        End If
                    Next
'проверка
PHP:
                    For Each myInk In myPrintOpTions.myColorSeparationOptions.InkList
                        MsgBox(myInk.Name & vbNewLine & myInk.InkInfo.PrintingStatus)
                    Next
PHP:
myPrintOpTions.ColorSeparationOptions = myColorSeparationOptions
все меняется как надо,
однако при печати встает на ошибке

PHP:
AiApp.ActiveDocument.PrintOut(myPrintOpTions)

upload_2014-1-14_14-8-4.png


возможно как то иначе создавать нужно эту (.ColorSeparationOptions) настройку либо иначе присваивать..
 
пока не изменится что либо здесь...
JavaScript Object Reference:
Document>>Document properties>>inkList - object - Read-only.

выше описаный способ и имеющийся баг к цели не приближает...
 
а новую версию Illustrator CC (17) не пробовали тестить? может там уже работает?
 
Последнее редактирование модератором:
не работает в СС, только в ЦС4
 
dumbm1, честно: помог бы, чем мог бы, но:
1. лень втыкаться в код, наполовину представленный.
2. , работы - до
Не по теме:
непереводимая игра слов...

3. Совет: абстрагируйтесь. Если это глюк, попробуйте решить проблему иначе: другой язык, другой софт...
4. Суперсовет. Супер-присупер: Если есть силы и возможность - изучайте SDK. Скрипты - сосут (извините за сленг, но мне сейчас иначе мысль не выразить. (просьба модераторам, поправить без казни))
 
Спасибо )))
3. Можно из готового ps-файла удалить ненужные страницы - вручную получается, скриптом тоже должно.

Не по теме:
4. А SDK, это в смысле C++ и адобовскую среду разработки? У меня такая идея фикс - написать простой плагин к иллюстратору - менеджер скриптов (для загрузки, отображения и запуска скриптов из палитры - как в индизайне, например). На первый взгляд просто и полезно, но никто пока не сделал.
 
Последнее редактирование:
как вариант можно в пдф а потом
PHP:
Function savPDF_pos(pozN As Integer, pdfDocpath As String, newSavepdfDocpath As String)
        // удаление лишних сепараций из pdf и сохранение по новому пути\

        Dim myPdfDoc As Object
   
        myPdfDoc.Open(pdfDocpath)
        Dim pageCount As Integer = myPdfDoc.GetNumPages

        If pozN > 1 And pozN < pageCount Then
            myPdfDoc.DeletePages(0, pozN - 2)
            myPdfDoc.DeletePages(1, pageCount - pozN)
        End If
        If pozN > 1 And pozN = pageCount Then
            myPdfDoc.DeletePages(0, pozN - 2)
        End If
        If pozN = 1 And pozN < pageCount Then
            myPdfDoc.DeletePages(1, pageCount - pozN)
        End If

        If pozN = 1 And pageCount = 1 Then
            Exit Function
        End If

        myPdfDoc.Save(1, newSavepdfDocpath)
        myPdfDoc.Close()

    End Function
 
  • Спасибо
Реакции: dumbm1
Статус
Закрыто для дальнейших ответов.