Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

19 Ноябрь 2018, 15:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Выравнивание текста и списков в полях (Writer)  (Прочитано 791 раз)
0 Пользователей и 1 Гость смотрят эту тему.
bryukva
Участник
**
Offline Offline

Сообщений: 13



« Стартовое сообщение: 2 Ноябрь 2018, 16:06 »

Здравствуйте!

Снова вопросы связанные с полями. Поля добавлены через Writer в шаблон, поля в шаблоне заполняются из внешней программы. При заполнении появляется некорректное поведение, а именно связанное с выравниванием по ширине как обычный текст так и нумерованный список. Приходится выставлять выравнивание по левому краю, что не очень красиво. Если создавать документ во Writer изначально, то таких проблем не наблюдается. В прикреплённом файле наглядно видно. Что это? Баг?

* doc.odt (16.96 Кб - загружено 11 раз.)
« Последнее редактирование: 2 Ноябрь 2018, 16:09 от bryukva » Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 332


« Ответ #1: 2 Ноябрь 2018, 16:35 »

Мне кажется это из-за отсутствия конца параграфа (абзаца). Попробуйте после вставки текста добавить chr(13)
Записан
bryukva
Участник
**
Offline Offline

Сообщений: 13



« Ответ #2: 2 Ноябрь 2018, 17:08 »

Мне кажется это из-за отсутствия конца параграфа (абзаца). Попробуйте после вставки текста добавить chr(13)
Да, скорее всего из-за отсутствия конца параграфа (абзаца). Добавил chr(13) после текста в программе, в которой заполняются поля шаблона, не помогло - осталось так же.
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 965


« Ответ #3: 2 Ноябрь 2018, 17:17 »

Задайте полям стиль не Базовый, а Обычный/Основной с нужным выравниванием, автопереносами с ограничением не более 2-х - и будет выглядеть красиво. "Жидкие" строки с большим пробелами - это стили. Writer тем и замечателен, что позволяет форматировать поля (жирным, с переносами итп). MS Word так не умеет. 
« Последнее редактирование: 2 Ноябрь 2018, 17:19 от economist » Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
bryukva
Участник
**
Offline Offline

Сообщений: 13



« Ответ #4: 7 Ноябрь 2018, 07:13 »

Задайте полям стиль не Базовый, а Обычный/Основной с нужным выравниванием, автопереносами с ограничением не более 2-х
Извиняюсь за нубский вопрос, но где это делается? Улыбка
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 965


« Ответ #5: 7 Ноябрь 2018, 17:11 »

Выделяете поле, жмете F11 - появился справа Стилист. В нем внизу - Просмотр стилей - Используемые стили, а затем щёлкаете на иконке Стиль абзаца, чтобы увидеть текущий стиль. Вот он должен быть не базовый, а Основной текст. Щелчок ПКМ - Изменить - там на 2-х вкладках (Выравнивание и ОтступыИнтервалы) - всё и настраивается.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
bryukva
Участник
**
Offline Offline

Сообщений: 13



« Ответ #6: 8 Ноябрь 2018, 15:48 »

Выделяете поле, жмете F11 - появился справа Стилист. В нем внизу - Просмотр стилей - Используемые стили, а затем щёлкаете на иконке Стиль абзаца, чтобы увидеть текущий стиль. Вот он должен быть не базовый, а Основной текст. Щелчок ПКМ - Изменить - там на 2-х вкладках (Выравнивание и ОтступыИнтервалы) - всё и настраивается.
В течении дня пробовал изменять разные параметры (игрался с "Отступы и интервалы", "Выравнивание" и "Положение на странице"), но так и не смог привести поля к тому виду, который хочется Грустный
Записан
economist
Форумчанин
***
Offline Offline

Сообщений: 965


« Ответ #7: 8 Ноябрь 2018, 17:02 »

Добавьте

вкладка Положение на странице - Автоматический перенос

Внизу вкладки - снимите оба флажка Запрет ... висячих строк. 
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
bryukva
Участник
**
Offline Offline

Сообщений: 13



« Ответ #8: 16 Ноябрь 2018, 15:56 »

Добавьте

вкладка Положение на странице - Автоматический перенос

Внизу вкладки - снимите оба флажка Запрет ... висячих строк. 

Удалось настроить стиль, чтобы содержание документа не начиналось с новой страницы, если оно слишком большое. "Жидкие" строки так и не получается сделать.


* 2018-11-16_17-53-10.png (7.89 Кб, 405x335 - просмотрено 4 раз.)

* 2018-11-16_17-53-26.png (11.6 Кб, 566x380 - просмотрено 4 раз.)
* doc.odt (19.99 Кб - загружено 2 раз.)
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 110


« Ответ #9: 16 Ноябрь 2018, 16:18 »

"Жидкие" строки так и не получается сделать.

"Жидкие" - это какие? это которые, как "Установка на Ubuntu максимально проста:", растянуты по ширине, как и весь остальной абзац?

Всё содержимое поля - это один большой абзац с разрывами строк (аналогично Shift+Enter). И туда засунуть абзацы, по-моему, невозможно (ODF 1.2 говорит, что элементы <text:variable-set> не содержат подэлементов, а абзац - это элемент <text:p>). И это не баг.

А зачем и в каком процессе большие данные пихаются в поля? Не проще ли использовать в качестве шаблона документ .FODT, и править его как обычный XML (скажем, поместить в нужное место спецблок, который программа-генератор будет заменять на нормальный текст с разметкой ODF)? Если надо, программа-генератор потом может и перегонять получившееся в .ODT с помощью --convert-to.
« Последнее редактирование: 16 Ноябрь 2018, 19:35 от mikekaganski » Записан

С уважением,
Михаил Каганский
bryukva
Участник
**
Offline Offline

Сообщений: 13



« Ответ #10: Вчера в 15:10 »

"Жидкие" - это какие?
Например, в строке всего три слова (занимают половину), которые вытягиваются на всю ширину страницы и, соответственно, расстояние между словами очень большое.

А зачем и в каком процессе большие данные пихаются в поля?
Шаблон документа заполняется из данных 1С Документооборот. Текст там в формах без возможности какого-либо форматирования передаётся в шаблон.
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 110


« Ответ #11: Вчера в 15:14 »

Шаблон документа заполняется из данных 1С Документооборот. Текст там в формах без возможности какого-либо форматирования передаётся в шаблон.

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

С уважением,
Михаил Каганский
bryukva
Участник
**
Offline Offline

Сообщений: 13



« Ответ #12: Сегодня в 08:19 »

...магически? или есть некая программа, которая занимается передачей текста в шаблон?
Этим всем и занимается 1С Документооборот.
Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 332


« Ответ #13: Сегодня в 09:59 »

Если не получается с полями, можно через закладки попробовать
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 605


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #14: Сегодня в 10:05 »

Ну, если гора не идёт к Магомету... В смысле, если переписывать весь кусок Документооборота, который занимается формированием плохих документов, не представляется возможным, то можно нагрузить Документооборот дополнительной задачей - после сохранения готового файла, когда программа ещё помнит его имя, вызвать дополнительную обработку. Что-то вроде такого:
Код:
Процедура ИзменитьФорматСтраницы(ИмяФайла)
    Попытка
        ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
    Исключение
        Предупреждение(ОписаниеОшибки() + Символы.ПС + "Проверьте правильность установки и доступность LibreOffice!");
        Возврат;
    КонецПопытки;
Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
Args = Новый COMSafeArray("VT_VARIANT", 3);
Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
Свойства.Name = "FilterName";
Свойства.Value = "writer8";
Args.SetValue(0, Свойства);
Свойства1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
Свойства1.Name = "FilterOptions";
Свойства1.Value = "";
Args.SetValue(1,Свойства1);
Свойства2 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
Свойства2.Name = "Hidden";
Свойства2.Value = Истина;
Args.SetValue(2,Свойства2);
ВременныйПуть = "file:///" + СтрЗаменить(СтрЗаменить(ИмяФайла, "\", "/"), " ", "%20");
Document = Desktop.LoadComponentFromURL(ВременныйПуть, "_blank", 0, Args);
// Всё, документ открыт - переменная Document содержит всё необходимое
// Здесь можно перебирать поля, менять их содержимое на обычный текст, применять стили...
// Эту часть можно написать и отладить на бэйсике и или пернести сюда,
// или сохранить в каком-то внешнем файле и вызывать оттуда
// А в самом конце:
Document.Store();
Document.close(Истина);
КонецПроцедуры
В конце концов, если киношники используют постпродакшн для улучшения отснятого материала, то чем программисты хуже?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!