Вставка очень большой таблицы в Indesidn

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

leechdraw

Участник
Топикстартер
Сообщения
50
Реакции
0
Задача такая:
Есть данные (изначально в БД, но можно выгрузить в любой формат - не проблема) табличного вида.
Для каждой строчки данных известно какого она должна быть цвета и начертания (ограниченный набор сочетаний, по типу - жирный шрифт на синем фоне, красный цвет текста и т.п.)
Кроме того в публикации будут встречаться изображения. Место положение каждого изображения известно, например на 3 страница координаты такие-то. Причем изображения стоят всегда либо сверху либо снизу и всегда заполняют страницу по ширине, то есть для ширины страницы 180мм - ширина изображения 180мм. Высота может варьироваться, но тоже заранее известна.
Размер таблицы - порядка 2-3 тысяч строк.
Необходимо разместить таблицу.
Решение, которое отрабатываю сейчас - таблица выгружается в теговый файл. Высота строки не указывается. Высота строки позднее расставляется скриптом.
Собственно проблема в том, что данная процедура занимает слишком много времени - порядка получаса. Учитывая, что речь идет о регулярной верстке - два раза в неделю, а кроме того таких таблиц в публикации будет около 2 десятков, то такой вариант просто неприемлем.
Хотелось бы узнать какие еще варианты загрузки строк можно применять в InDis, Просто систему изначально делал не я. Более того с InDis я знаком слабо (я сам программер). Пробовал было реализовать тоже самое через xml, но там получается еще более страшные вещи - xml такого размера убивает InDis просто наповал.
 
Ответ: Вставка очень большой таблицы в Indesidn

Выгружайте правильно данные из базы в тэговый файл, сразу прописывая в нем стили таблицы (и стили ячеек, если требуется). Отпадет надобность в расчете высоты строки скриптом (если в ячейки таблицы не будете ставить графику, конечно). Время значительно с'экономится. Обратите внимание, при создании такого тэгового файла одним из параметров надо будет указать количество строк в таблице.
 
Ответ: Вставка очень большой таблицы в Indesidn

ок, попробую.
 
Ответ: Вставка очень большой таблицы в Indesidn

К сожалению, мой совет будет бесполезным, если у вас версия Индизайна - CS2 или CS. В них стили таблиц в тэговом файле еще не поддерживались.
 
Ответ: Вставка очень большой таблицы в Indesidn

Я делал года два назад плагин для верстки каталога мебельной продукции.
Там тоже были большие таблицы.
Одно могу сказать точно, при изменении таблицы скриптом, в отличии от плагина, каждый раз происходит рекомпозиция текста и таблицы, а это очень длительный процесс при больших таблицах. Как запретить рекомпозицию из скрипта я не знаю.
Можно попробовать так: Сделать фрейм нужной ширины и очень маленькой высоты, создать там таблицу, залить текст, выставить стили, изменить высоту ячеек, а уже после этого добавлять страницы и фреймы, связывая их.
Если уж совсем ничего не получится, стучитесь.
 
Ответ: Вставка очень большой таблицы в Indesidn

в настоящий момент делаю строительный каталог прайс-строк, строки берутся из экселя, рекламные объявления вставляются отдельно из графических файлов. в течении часа все заканчивает свою работу. Еще ранее делал каталог недвижимости, там объявления были в колонку. Объявления формировалось в тэговый файл и заливались весьма быстро в течении пару минут могло сверстаться страниц 200 журнала. Минусом этого способа было отсутствие картинок в каталоге
 
Ответ: Вставка очень большой таблицы в Indesidn

KoBo сказал(а):
в настоящий момент делаю строительный каталог прайс-строк, строки берутся из экселя, рекламные объявления вставляются отдельно из графических файлов. в течении часа все заканчивает свою работу. Еще ранее делал каталог недвижимости, там объявления были в колонку. Объявления формировалось в тэговый файл и заливались весьма быстро в течении пару минут могло сверстаться страниц 200 журнала. Минусом этого способа было отсутствие картинок в каталоге
Хм. Беда в том что картинок много - журнал о недвижимости.
Вообем то расчитать заранее высоту я думаю у меня получится (не без бубна конечно).
Другое дело что я так и не понял почему ТАК долго импортится теговый файл?
Неужели все дело именно в том что он пытается сразу же отрисовываться?
Может есть вариант как отключить прорисовку?
 
Ответ: Вставка очень большой таблицы в Indesidn

KoBo сказал(а):
в настоящий момент делаю строительный каталог прайс-строк, строки берутся из экселя, рекламные объявления вставляются отдельно из графических файлов. в течении часа все заканчивает свою работу. Еще ранее делал каталог недвижимости, там объявления были в колонку. Объявления формировалось в тэговый файл и заливались весьма быстро в течении пару минут могло сверстаться страниц 200 журнала. Минусом этого способа было отсутствие картинок в каталоге
Можешь по подробнее описать как выглядят данные в экселе и применяется ли к ним доп форматирование (цвет, жироность и тп)
Хотя в любом разе час - неприлично долго)
Ну, вообщем пока вот отрабатываю версию отключения отрисовки. Как ее выключить мышей я уже нашел. А вот как ее вырубить скриптом пока не понял.
 
Ответ: Вставка очень большой таблицы в Indesidn

я так понял что тема не одного меня волнует )))
Если у меня получится что-либо удобоваримое попробую сериализировать и зарелизить под BSD-лиценз.
Кстати, а Не подскажете как быстро удалить цепочку связанных текстовых фреймов?
 
Ответ: Вставка очень большой таблицы в Indesidn

leechdraw сказал(а):
я так понял что тема не одного меня волнует )))
Если у меня получится что-либо удобоваримое попробую сериализировать и зарелизить под BSD-лиценз.
Кстати, а Не подскажете как быстро удалить цепочку связанных текстовых фреймов?
А так долго?
PHP:
//app.scriptingVersion=4.0	
	if (app.documents.length < 1) {
		alert("Нет активных документов");
		exit();
	}

try {var myStory = app.selection[0].insertionPoints[0].parentStory}
		catch (err) {exit()}
		
for (var i=myStory.textFrames.length-1;i>=0;i--){
	myStory.textFrames[i].remove()
	}
 
Ответ: Вставка очень большой таблицы в Indesidn

"Как ее выключить мышей я уже нашел. А вот как ее вырубить скриптом пока не понял"
- может через app.menuActions?
 
Ответ: Вставка очень большой таблицы в Indesidn

TO dik973: +) Думаю не долго ) Так и сделаю.
TO LeshikSan: Надо попробовать.
 
Ответ: Вставка очень большой таблицы в Indesidn

Отключение прорисовки. Вот пример кода:
Код:
if (app.menuActions.itemByName("Enable Redraw").checked)
{
app.menuActions.itemByName("Enable Redraw").invoke();}
else
{
	alert("Already off!");
	}
 
Ответ: Вставка очень большой таблицы в Indesidn

может кому пригодится.
Вывести список доступных комманд меню в файл. (Взято из ЮзерГида к CS3 JS).
Код:
var mm=app.menuActions.everyItem().name;
var mt=File.saveDialog ("Save As...",undefined);
if (mt != null)
	{
		mt.open("w");
		for(var mc=0; mc<mm.length; mc++)
		{
			mt.writeln (mm[mc]);
		}
	mt.close();
 
Ответ: Вставка очень большой таблицы в Indesidn

Если кому интересно. Пока лучший из полученных результатов для таблицы на 50 страниц из 3000 строчек - 12 минут.
Сегодня буду экспериментировать теговый файл + стили. До этого все делаллось без стилей, то есть для каждой ячейки (в некоторых случаях - строки) указывались соответствующие параметры в теговом файле.
Если кто-нибудь сравнивал производительность отпишитесь, пожалуйста.
 
Ответ: Вставка очень большой таблицы в Indesidn

скорость работы заливки файла как правило очень зависит от конфигурации машины и содержания тегового файла

а база табличной информации была в текстовых файлах, потом все собиралось в тэговый при этом-то и прописывалась жирность и тому подобное
 
Статус
Закрыто для дальнейших ответов.