Если есть вопросы по скриптам

  • Автор темы Автор темы Oleg Butrin
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Ответ: Если есть вопросы по скриптам

может я повторюсь..., но ищу скрипт по изменению макета этикетки.
Есть такое:
original.jpg

нужно получить:
kak_nado.jpg

Изменила путем перенастройки макета (изменены параметры документа)
Никогда не знаешь, на какой этикетке это будет печататься. ':('
Если такой результат возможно получить с помощью Quite Imposing (было бы здорово!), внимательно выслушаю.
 
Ответ: Если есть вопросы по скриптам

Что-то не пойму, что именно вам надо? Макет уменьшить? А вы уверены, что вам именно в индизайне это делать надо?
 
Ответ: Если есть вопросы по скриптам

совершенно верно - нужен скрипт увеличения макета по ширине.
Если такой результат возможно получить с помощью Quite Imposing (было бы здорово!), внимательно выслушаю.
при изменении макета в Adobe Acrobat не очень красиво получается.
 
Ответ: Если есть вопросы по скриптам

несколько вопросов:
есть ли функция создания папки?
и как присвоить цвет NONE?
 
Ответ: Если есть вопросы по скриптам

Код:
app.activeDocument.selection[0].fillColor = "None";
app.activeDocument.selection[0].strokeColor = "None";

var myFolder = Folder("/f/MyFolder").create();
 
Ответ: Если есть вопросы по скриптам

вот блин. ) я как только не писал: и app.activeDocument.colors.item("[None]"); и [None] и просто none и т.д. )
спасибо. и еще как установить эффект прозрачности у обьекта и можно как то задать папку на уровень ниже?
 
Ответ: Если есть вопросы по скриптам

как установить эффект прозрачности у обьекта
через fillTransparencySettings, strokeTransparencySettings и просто transparencySettings. Посмотрите в объектной модели.

можно как то задать папку на уровень ниже?
Да сколько угодно уровней:
Код:
var myFolder = Folder("/f/myFolder/myFolder2/myFolder3").create();
 
Ответ: Если есть вопросы по скриптам

transparencySettings у polygon написано readonly ...

а по поводу папки - уровень в другую сторону? ) то есть "../" не получается.
 
Ответ: Если есть вопросы по скриптам

transparencySettings у polygon написано readonly ...
Если просто задать процент прозрачности, то так:
Код:
myObj.transparencySettings.blendingSettings.opacity = 80; //80 - процент прозрачности

уровень в другую сторону? ) то есть "../"
Свойство parent:
Код:
var myUpFolder = myCurrentFolder.parent;
Это не проверял, просто глянул в объектной модели (Core JavaScript Classes) - там так описано.
 
Ответ: Если есть вопросы по скриптам

здравствуйте.
нужна помощь по написанию скриптов для InDesign на .net

при попытке обратиться к любому методу или проперти объекта InDesign.Application я всегда получаю такой ексепшн

Невозможно привести COM-объект типа "InDesign.ApplicationClass" к интерфейсному типу "InDesign._Application".
Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}"
возвратил следующую ошибку: Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE)).

вот пример кода
Код:
InDesign.Application IDApp = new InDesign.Application();
IDApp.ActiveDocument.Place(@"C:\2\tmp\1.eps", true);

до этого писал скрипты на .net для иллюстратора и фотошопа, с ними таких проблем не было

заранее спасибо

забыл добавить: .net 3.5, InDesign CS3
 
Ответ: Если есть вопросы по скриптам

спасибо за ответ, очень оперативно!

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

Unable to cast COM object of type 'System.__ComObject' to interface type 'InDesign.Application'.
This operation failed because the QueryInterface call on the COM component for the interface with IID '{ABD4CBB2-0CFE-11D1-801D-0060B03C02E4}' failed due to the following error:
Интерфейс не поддерживается (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

единственный выход, который я нашёл - использовать dynamic тип, введённый в .net 4.0

Код:
Type inDesignAppType = Type.GetTypeFromProgID("InDesign.Application");
dynamic IDApp = Activator.CreateInstance(inDesignAppType);

вообще, объектная модель adobe ужасно взаимодействует с сильнотипизированными языками

вот, например, ответ техподдержки на проблему, похожую на мою
C# uses strong typing. Strong typing can be very difficult to use when scripting InDesign as many of the return values can vary depending on the function call and the content of the document. VBScript is a much better choice.

The pain level of InDesign scripting with C# will be very high.
 
Ответ: Если есть вопросы по скриптам

именно так, я поэтому практически сразу отказался от .net, крайне неудобно получить, к примеру, от поиска по тексту ответ, в котором месиво объектов string, word, character и потом их все пытаться привести и проверять. поэтому проще все же использовать js
 
Ответ: Если есть вопросы по скриптам


Не по теме:
А главное, меня никто так и не смог убедить в оправданности его использования. Такой же интерпретатор, такой же тормозной. Разве что синтаксис более модный-гламурный?
 
Ответ: Если есть вопросы по скриптам

Здравствуйте.
Мне нужно вызвать окно Map Styles to Tag, вот это
mapstytota.png
В хелпе нашел функцию Document.mapStylesToXMLTags (), но как я понял она присваивает теги по заданной заранее карте.
Можно ли вызвать именно диалог?
 
Вопрос по подстановке SpecialCharacters в Line.contents

Добрый день, уважаемые JavaScript-IndesignCS3-специалисты :) !

Я вот тут замучался с таким простеньким скриптом.

Я перебираю многостраничный текст, и мне надо исправлять/заменять нумерацию в стиле "- 14 -". При этом дефис должен быть SpecialCharacters.EN_DASH. И я никак не могу его туда вставить 'otbline' !!!

Код у меня такой:

Код:
var doc = app.activeDocument;
// ...
for (col_i = doc.pages.count (), i = 0; i < col_i; ++i)
{
    var page = doc.pages[i];
// ...
    for (col_j = page.textFrames.count (), j = 0; j < col_j; ++j)
    {
        var text_frame = page.textFrames[j];
// ...
        for (col_h = text_frame.lines.count (), h = 0; h < col_h; ++h)
        {
            var line = text_frame.lines[h];
// ...
                // . текст на подстановку
                var str = "- ";
                str += current_number++;
                str += " -\r";
                
                line.contents = str;

При этом я вместо '-' хочу подставить SpecialCharacters.EN_DASH . Прямая подстановка (str = SpecialCharacters.EN_DASH) дает код символа - 1397059140. Подстановка в стиле str[0] = SpecialCharacters.EN_DASH тоже не проходит. Подскажите, пожалуйста!
 
Ответ: Вопрос по подстановке SpecialCharacters в Line.contents

Ну... с горем пополам я нашел вариант - использовать UNICODE-код символа:

Код:
var str = "\u2013 ";
str += current_number++;
str += " \u2013\r";

Нашел я символ через пункт меню Glyphs. Но все-таки это не то! Для чего-то же придумали перечисление SpecialCharacters !!! Пока у меня получается только определять код ИМЕЮЩЕГОСЯ символа. А вот ВСТАВЛЯТЬ чего-то не очень...
 
Ответ: Вопрос по подстановке SpecialCharacters в Line.contents


Не по теме:
У меня тоже с ними вечно проблемы...

Такого плана алгоритм сработает:
Код:
var myLine = app.activeDocument.selection[0].parentStory.lines;
for (i=0;i<myLine.length;i++){
	myLine[i].insertionPoints[0].contents = SpecialCharacters.EN_DASH;
	myLine[i].insertionPoints[0].contents = String(i);
	myLine[i].insertionPoints[0].contents = SpecialCharacters.EN_DASH;
	}
 
Ответ: Вопрос по подстановке SpecialCharacters в Line.contents

Боже, какой изврат '8()' !..
Неужели нельзя как-то ПО-ЧЕЛОВЕЧЕСКИ этого сделать!!!
Вот разве что, наверное, через UNICODE-код символа...
 
Статус
Закрыто для дальнейших ответов.