Масштабирование изображений внутри фрейма

  • Автор темы Автор темы Septic87
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
В крайнем случае можно создать новый концевой текстовый фрейм размером в разворот или больше, куда гарантированно войдет картинка. И вот там ее и поймать для изменения размера.
 
MT, у вас пример не верный скорее всего. У меня доковский документ, в нем есть текст и картинка шириной с страницу. Причем текст вокруг картинки и текста много как "снизу" так и "сверху". Или мб это проблема совместимости c# и indesign?
Oleg Butrin, а как мне тогда определить куда вставить новый фрейм? И как подтащить туда картинку?
И можно ли определить есть ли во фрейме что-то, т. е. пуст он или нет?
 
Пример у меня верный. Просто это пример того, что масштаб можно
применить к картинке, находящейся в неразмещенном тексте.
И больше ничего.
 
MT, попробовал ваш способ:
Код:
application.TransformPreferences.WhenScaling = idWhenScalingOptions.idAdjustScalingPercentage;
  frm.Place(sPath);
  for (int j = 1; j <= frm.AllGraphics.Count; j++)
  {
  Image image = frm.AllGraphics[j] as Image;
  Rectangle rct = image.Parent as Rectangle;
  double myScale = 1.1;// игрался от 0.01 до 80.0
  string myJavaScript  = "var myImage = arguments[0];\r";
  myJavaScript  += "var myRect  = arguments[1];\r";
  myJavaScript  += "var myScale  = arguments[2];\r";
  myJavaScript  += "myRect.absoluteHorizontalScale = myRect.absoluteVerticalScale = myScale;\r";
  //myJavaScript  += "myRect.GeometricBounds;\r";
  
  Array myArguments = new object[3] { image, rct, myScale };
  application.DoScript(myJavaScript, InDesignServer.idScriptLanguage.idJavascript, myArguments);
 
  dynamic ddd = rct.GeometricBounds;
  //image.AbsoluteHorizontalScale = image.AbsoluteVerticalScale = 10;
  //dynamic ddd1 = image.GeometricBounds;
  }

Мб мне нужно еще какие-то настройки включить? (все флаги в TransformPreferences перепробовал) Или после установки масштаба позвать какой-то особый метод, чтобы он применился?[/code]
 
Что касается настроек и особых методов,
то я дал весь скрипт для уменьшения одной картинки.

Я не понимаю что именно у вас не работает.
Картинки не уменьшаются или текст не размещается?
Может у вас текста на несколько страниц...
 
У меня при изменении масштаба, фрейм картинки не размещается (у него не появляются GeometricBounds).
Вот мой пример файла. А размер фрейма примерно 8x7 см на формате а4.
http://webfile.ru/76bea4ef7cee0e694622461398024c1a
 
Последнее редактирование:
Забыл отметить, что я попробовал в документе разместить одну картинку и у меня все получилось, но если добавить такой же документ но уже с текстом, то при запросе GeometricBounds падает.
 
Ну теперь понятно.
Вы во фрейм помещаете текст, который не влазит,
а потом путем уменьшения картинок пытаетесь впихнуть.
Но InDesign не создает новые фреймы.
Надо проверять переполнение последнего фрейма в цепочке,
создавать новые фреймы и связывать.

Что касается вашего примера, то мой сценарий работает,
только запускать его пришлось 2 раза (25% недостаточно по высоте), но фрейм при этом
остается переполненным.

Запрос GeometricBounds заверните в try и падать не будет, зато будете знать что так и не разместился.
 
  • Спасибо
Реакции: Septic87
Все, я разобрался в чем была проблема.'dans))'
MT, спасибо вам, ваш способ действительно работает.
Все что вы только что описали у меня было сделано, но дело в том что, InDesign, судя по всему, большой документ добавляет по цепочке. Т е в первом фрейме картинки, конечно есть, но размещены они будут когда будет добавлен NextTextFrame, при котором в Contents будет какой-то символ картинки (как мне показал отладчик ) ) и это будет говорить о том что там есть она, после изменить масштаб. А дальше дело техники ).
 
Статус
Закрыто для дальнейших ответов.