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

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

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

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

Сообщений: 8


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

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

* protokol.ods (37.85 Кб - загружено 26 раз.)
* protokol1.ods (34.9 Кб - загружено 17 раз.)
Записан
tema
Участник
**
Offline Offline

Сообщений: 8


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

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

Сообщений: 978


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

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

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

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

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

Сообщений: 8


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

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

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

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

Сообщений: 91


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

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

Записан
tema
Участник
**
Offline Offline

Сообщений: 8


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

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

Сообщений: 978


« Ответ #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

Сообщений: 91


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

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

Сообщений: 8


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

Большое пребольшое спасибо!  Всё хорошо
Записан
tema
Участник
**
Offline Offline

Сообщений: 8


« Ответ #9: 28 Март 2019, 02:26 »

Прошу прощения за некропост Улыбка
Тот макрос, который я тогда смог запилить помогал, но не сильно. Если точнее, то кроме меня им никто не пользовался, т.к. никому не хотелось напрягать лишний раз мозг выясняя как макрос запустить и все быстро копипастом в конце каждой страницы просто вставляли эту хренову подпись.
За последний год сама программка генерирующая отчёты чуть изменилась и я решил вернуться к вопросу. Может за это время какой-то функционал добавился в саму либру?
Ответ на любой из предложенных вопросов помог бы окончательно поставить точку в данном топике:
1. Как нижний колонтитул прижать к содержимому страницы? writer/calc
2. Как зафиксировать в calc строки не сверху, а снизу? (Формат-Диапазоны печати-Повторять строки) calc
3. Как добавить в нижний колонтитул какой-нибудь "резиновый" символ или картинку-распорку по вертикали, которая будет автоматически распирать нижний колонтитул до содержимого страницы? writer/calc
4. Как добавить элемент, повторяющийся на каждой странице (блок текста, например), который прижимается к низу страницы?  writer/calc
5. Есть ли возможность определить автоматически (ручной, полагаю, можно без проблем) проставленный разрыв страницы не макросом а в XML файле документа?
« Последнее редактирование: 28 Март 2019, 02:28 от tema » Записан
tema
Участник
**
Offline Offline

Сообщений: 8


« Ответ #10: 28 Март 2019, 02:39 »

1. Как нижний колонтитул прижать к содержимому страницы? writer/calc
Если такой возможности в либре не появилось и, если никто из уважаемых форумчан-разработчиков за такое не возьмётся, прошу помощи сформулировать на английском запрос на эту фичу к разработчикам. Хочу отправить в их трекер какой-нибудь, ибо нужная всё-таки вещь. Много где подобное сильно бы помогло.

Полагаю, что там формирование страницы на печать идёт как-то так:
На канву принтера последовательно отправляются строки таблицы до разрыва, потом идёт отступ, рассчитанный до колонтитула, а потом колонтитул.
Нужно всего лишь убрать этот отступ до колонтитула. Галочку активации этого можно поместить в настройки нижнего колонтитула.
« Последнее редактирование: 28 Март 2019, 03:17 от tema » Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #11: 28 Март 2019, 08:34 »

Полагаю, что там формирование страницы на печать идёт как-то так:
На канву принтера последовательно отправляются строки таблицы до разрыва, потом идёт отступ, рассчитанный до колонтитула, а потом колонтитул.
Нужно всего лишь убрать этот отступ до колонтитула.
Это не так.
Поля и колонтитулы заданы в стиле листа, а содержимое размещается в области печати. Если содержимого не хватает на всю область печати, то остаётся свободное место (оно никак не вычисляется, просто что осталось), а если содержимое больше области печати, оно переносится на новый лист.
Записан

tema
Участник
**
Offline Offline

Сообщений: 8


« Ответ #12: 28 Март 2019, 21:43 »

Тогда может можно сделать плагин в котором просто указываешь в окошке, как в колонтитуле, некоторую информацию и эта информация прилипает снизу ко всем страницам при печати?
Записан
rami
Гуру
*******
Offline Offline

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


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #13: 28 Март 2019, 22:02 »

Есть один лёгкий вариант, но для Writer — использовать автозамену для вставки "подписи" в виде картинки. Интересует?
Записан

OOKapitan
Форумчанин
***
Offline Offline

Сообщений: 461


« Ответ #14: 29 Март 2019, 10:37 »

Интересует?
Не знаю, как ТС, а меня, а возможно и кого-то ещё - да, интересует.
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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