4 СТИЛЯ - body_text, headingl, heading2 И heading3. В принципе, расширить их число не представляет никакой проблемы: предлагаемый скрипт служит только для иллюстрации общего подхода к решению задачи, а конкретная реализация не составит никакого труда.

Принцип конвертирования таков: сначала формируем таблицу соответствий, определяющую, какому стилю из публикации соответствует определенный стиль в HTML-документе- именно ее нужно наращивать используемыми стилями до требуемых возможностей. Затем просматриваем содержание каждого материала публикации и определяем, каким стилем отформатирован каждый абзац.

В зависимости от присвоенного стиля добавляем в начало и конец каждого абзаца HTML-документа открывающий и закрывающий теги.

Если попадается таблица, ее также оформляем соответствующими тегами разметки (table, tr, td).

Начинаем (листинг 4.23). Шаг первый - создаем таблицу соответствий в виде двумерного массива, каждый элемент которого представляет собой отдельный массив с парой значений: название стиля, используемого в публикации, и соответствующий ему стиль в HTML. Такой подход позволит нам в цикле просматривать правила переформатирования, и в случае, если найден любой из первых элементов, заменять на второй.

Листинг 4.23. Экспорт в HTML

myStyleToTagMapping = new Array; myStyleToTagMapping.push(["body_text", "p"]); myStyleToTagMapping.push(["headingl", "hi"]); myStyleToTagMapping.push(["heading2", "h2"]); myStyleToTagMapping.push(["heading3", "h3"]);

// Выводим диалоговое окно, в котором пользователь указывает,

// куда файлы будут экспортированы if(app.documents.length!=0){

if(app.documents[0].stories.length != 0

var myTextFile = File.saveDialog("Save HTML As", undefined) if(myTextFile != null){ // Открываем файл с доступом для записи

myTextFile.open("w");

// Начинаем просматривать содержимое каждого материала публикации for(var i = 0; i <арр.documents[0].stories.length; i ++){ myStory = app.documents[0].stories[i];

// Переходим к абзацам

forfvar j = 0; j<myStory.paragraphs.length; j ++){ myParagraph = myStory.paragraphs[j];

11 С таблицами - отдельный разговор.

// Пока рассматриваем только текст if(myParagraph.tables.length == 0)(

// Проверяем наличие локального форматирования if(myParagraph.textStyleRanges.length == 1){

// Если оно существует, определяем соответствующую // HTML-разметку. Если полужирный, то Bold и т. п. myTag = myFindTag(myParagraph.appliedParagraphStyle.name, ’Ь myStyleToTagMapping);

// Если данному стилю в публикации не поставлен // в соответствие ни один HTML-стиль, выводим абзац // как простой текст, if(myTag == "")

{myTag = "р";}

// Иначе задаем оформление для открывающего // и закрывающего тегов myStartTag = "<" + myTag + myEndTag = "</" + myTag +

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


⇐ вернуться назад | | далее ⇒