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

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

13 Декабрь 2017, 17:50 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 5


« Стартовое сообщение: 20 Март 2017, 15:54 »

Уже давно стоит эта проблема пытался решить по-разному и не решил. Сейчас проблема встала в полный рост, поэтому начал копать изо всех сил...
Нужно сделать место для подписи на каждой странице документа. Первое, что пришло в голову - это колонтитулы. Но проблема в том, что колонтитулы печатаются в самом низу страницы и это приводит к тому, что на некоторых страницах между подписью и текстом может быть довольно большое расстояние когда, напрмер, на странице какой-то таблица только на полстраницы. Это недопустимо для документа, т.к. между нижней границей содержимого и подписью можно что-то впечатать. Как сделать место для подписи в Calc на каждой странице так, чтобы оно прижималось на каждой странице к содержимому снизу?
Для иллюстрации прикрепляю два файла. Там настроены колонтитулы и на просмотре печати или печати в pdf видно, что подписи в protokol1 на многих страницах очень далеко от содержимого. protokol - это тот же файл, но без разрывов, но разрывать категорию в документах нельзя - министерство спорта не примет. Но и в нём на последней странице подписи далеко от содержимого...

* protokol.ods (37.85 Кб - загружено 16 раз.)
* protokol1.ods (34.9 Кб - загружено 12 раз.)
Записан
tema
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #1: 20 Март 2017, 16:18 »

Может есть способ сделать какие-нибудь сквозные строки не шапкой а подвалом?
Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 761


« Ответ #2: 20 Март 2017, 16:22 »

Объемный программный Документ, в котором подписи "прыгают" с низа страницы куда угодно - у минспорта тоже вызовут тошнотворную реакцию. Эти "листики" будут смотреться как "абы что", а не часть документа.

В таких случаях в пустом месте листа рисуют большой знак Зорро - Z.

Его можно вставить и программно, макросом. Но дляэтого нужно понять - почему образуются большие промежутки (объединенные, высокие строки, несколько таблиц подряд итп).
« Последнее редактирование: 20 Март 2017, 16:27 от economist » Записан

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

Сообщений: 5


« Ответ #3: 20 Март 2017, 16:31 »

Объемный программный Документ, в котором подписи "прыгают" с низа страницы куда угодно - у минспорта тоже вызовут тошнотворную реакцию. Эти "листики" будут смотреться как "абы что", а не часть документа.

В таких случаях в пустом месте листа рисуют большой знак Зорро - Z.

Его можно вставить и программно, макросом. Но дляэтого нужно понять - почему образуются большие промежутки (объединенные, высокие строки, несколько таблиц подряд итп).
Я согласен, что смотрится именно так, как Вы сказали, но это их требование, так что такую реакцию вызовет у кого угодно, но не у них. Сказано сделать так и не иначе. Приходится вписывать сейчас вручную эту строчку с подписями на каждой странице. Никаких знаков Z ставить нельзя
Записан
Rafik
Пользователь
**
Offline Offline

Сообщений: 53


« Ответ #4: 21 Март 2017, 07:26 »

Если поступить так:
1. Для каждой строки таблицы сделать фиксированную высоту
2. Подсчитать сколько строк влезает на страницу. Напечатать черновик и подсчитать.
3. Нарисовать макрос, который, после определенного количества строк, будет вставлять подписи и принудительные разрывы.
4. Пусть макрос отслеживает поместится ли следующая таблица на лист, если первая не заполняет лист полностью. Если вторая не поместится, то пусть подписи и разрыв лепит перед непомещающейся. Критерий "колонка А не пустая" ==> эти строки принадлежат таблице.

Записан
tema
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #5: 21 Март 2017, 13:33 »

Если поступить так:
1. Для каждой строки таблицы сделать фиксированную высоту
2. Подсчитать сколько строк влезает на страницу. Напечатать черновик и подсчитать.
3. Нарисовать макрос, который, после определенного количества строк, будет вставлять подписи и принудительные разрывы.
4. Пусть макрос отслеживает поместится ли следующая таблица на лист, если первая не заполняет лист полностью. Если вторая не поместится, то пусть подписи и разрыв лепит перед непомещающейся. Критерий "колонка А не пустая" ==> эти строки принадлежат таблице.
Я думал об этом. Но 1 пункт невыполним, т.к. у некоторых длинные строки в некоторых ячейках. Когда название клуба длинное или что-то в этом роде.
Сделал так:
формирую в программе не только таблицы таблицы, но и чтобы под каждой была строка подписи. А там уже по ситуации:
либо подписывать вообще каждую таблицу
либо просто удалять/скрывать лишние подписи во время разметки - это куда проще, чем добавлять.
Кстати, есть горячие клавиши для скрытия строк?
Можно доавтоматизировать это макросом, но тут вопрос:
Как макросом определить, что вот на этой строке кончается страница?
« Последнее редактирование: 21 Март 2017, 13:37 от tema » Записан
economist
Ветеран
*****
Offline Offline

Сообщений: 761


« Ответ #6: 21 Март 2017, 13:54 »

По параметру True. Сейчас некогда, вот инфа:
Код:
Sub InsertPageBreak
' вставка разрывов страниц,
oSheet=ThisComponent.Sheets.getByIndex(0)
oDoc=ThisComponent

'-- Код, устанавливающий разрывы страниц Calc
'-- Способ 1. Относительно строки или столбца
'-- Вставим разрыв строки после 5 строки и 3 столбца (если нумеровать от 1)
oSheet.Rows.getByIndex(2).IsStartOfNewPage=true
oSheet.Columns.getByIndex(2).IsStartOfNewPage=true

'-- Способ 2. Относительно ячейки (сверху или слева)
'-- Вставим разрыв строки перед 5 строкой и 3 столбцом (если нумеровать от 0)
oCell = oSheet.getCellByPosition(3, 3)
oCell.Rows.IsStartOfNewPage=true
oCell.Columns.IsStartOfNewPage=true

'-- Код, отображающий ранее установленные разрывы страниц.
'-- Сервис->Параметры->OpenOffice.org Calc->Вид->Зрительные ориентиры->Разрывы страниц->.T.
oView = oDoc.getCurrentController()
oView.ShowPageBreaks=true

End Sub
Записан

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

Сообщений: 53


« Ответ #7: 21 Март 2017, 13:58 »

Как макросом определить, что вот на этой строке кончается страница?
Как макросом найти разрывы, на каких строках они находятся, есть в этой теме: http://forumooo.ru/index.php/topic,5552.0.html
Записан
tema
Новичок
*
Offline Offline

Сообщений: 5


« Ответ #8: 21 Март 2017, 14:19 »

Большое пребольшое спасибо!  Всё хорошо
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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