Выгрузка из Delphi в InDisign

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

Alexey2014

Участник
Топикстартер
Сообщения
7
Реакции
0
Здраствуйте. Подскажите пож-та каким образом можно текст из Delphi переслать в InDis с созданием нового файла. Есть ли у кого подобные примеры?
 
Ну я понимаю что старички еще в дельфях работают, но новичкам давно пора сваливать с этой экосистемы.
Что значит с созданием нового файла? хочется через OLE Automation?
https://forums.adobe.com/thread/288225?start=0&tstart=0
А в остальном курите мануалы по скриптовому языку.
 
Спасибо, буду разбираться
 
Добрый день. Дошел до момента вставки текста в InDesign.
Код:
procedure TForm1.MakeInD;
var VInD:OleVariant; doc, fr,ar: variant;
begin
  VInD := Unassigned;
  VInD := CreateOleObject('InDesign.Application');
  doc:=VInd.Documents.Add();
  fr:=doc.TextFrames.Add();
  fr.InsertionPoints.lastItem.Contents:='Text1';
  ar := VarArrayCreate([1,4], varOleStr);
  ar[1]:='0';
  ar[2]:='0';
  ar[3]:='50 mm';
  ar[4]:='150 mm';
   fr.GeometricBounds:=ar;
  fr:=doc.TextFrames.Add();
  fr.InsertionPoints.lastItem.Contents:='Text2';
  fr.GeometricBounds:=ar;
  VInD.Quit;
end;
И второй текст вставляется в тоже место где стоит первый.
Вопросы: Как мне сделать так чтобы они шли с отступом скажем в 5 мм друг от друга(пересчитывать ar или есть более красивое решение). И как установить ar[1] и ar[2] чтобы не от края листа вставлялся а с учетом отступов. Т.е. чтобы было как-то так:
18-09-png.65922

Жду Ваших советов. Спасибо
 

Вложения

  • 18-09.png
    18-09.png
    8.7 КБ · Просм.: 955
Почему именно дельфи выбран для работы с индизайном? Непонятна вообще задача в целом.
Я к примеру запустил ворд, нажал Alt+F11 и набросал в Immerdiate
Код:
set id = CreateObject("InDesign.Application")
set idd = id.Documents.Add()
set iddf = idd.TextFrames.Add(s)
iddf.GeometricBounds=Array(0, 0, 50, 110)
iddf.insertionPoints.lastitem.Contents="Text 1"
set iddf = idd.TextFrames.Add()
iddf.GeometricBounds=Array(80, 0, 130, 110)
iddf.insertionPoints.lastitem.Contents="Text 2"
Все работает.
Значит где-то налажали в VarArrayCreate или в единицах измерения, 50 mm могут не пройти (или пробуйте без пробела).
 
Нет. С кодом все верно, но у вас числа 50,110,130 взяты наобум. А мне хотелось чтобы фрейм вставлялся относительно полей документа. Сейчас получилось, как хотелось (беру значения activePage.marginPreferences.top, left,bottom и right и по ним определяю коррдинаты GeometricBounds и для каждого фрейма их пересчитываю), но как то объемно выходит...Может быть есть более простое решение.
 
Есть общие в настройках документа (применяются к страницам без мастера), а есть поля с мастер-страницы.
Поэтому ищите мастер, на котором основана страница, берете с него поля и делаете нужные расчеты.
Но лучше за пару вечеров прочитайте доки по InDesign... Это даст понимание что и откуда берется.
http://adobeindesign.ru/2012/10/11/skript-menyayushhij-razmer-frejma/
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.