Подпись на каждом листе документа calc

Автор tema, 20 марта 2017, 15:54

0 Пользователи и 1 гость просматривают эту тему.

tema

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

tema

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

economist

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

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

Его можно вставить и программно, макросом. Но дляэтого нужно понять - почему образуются большие промежутки (объединенные, высокие строки, несколько таблиц подряд итп).
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

tema

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

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

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

Rafik

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


tema

#5
Цитата: Rafik от 21 марта 2017, 07:26
Если поступить так:
1. Для каждой строки таблицы сделать фиксированную высоту
2. Подсчитать сколько строк влезает на страницу. Напечатать черновик и подсчитать.
3. Нарисовать макрос, который, после определенного количества строк, будет вставлять подписи и принудительные разрывы.
4. Пусть макрос отслеживает поместится ли следующая таблица на лист, если первая не заполняет лист полностью. Если вторая не поместится, то пусть подписи и разрыв лепит перед непомещающейся. Критерий "колонка А не пустая" ==> эти строки принадлежат таблице.
Я думал об этом. Но 1 пункт невыполним, т.к. у некоторых длинные строки в некоторых ячейках. Когда название клуба длинное или что-то в этом роде.
Сделал так:
формирую в программе не только таблицы таблицы, но и чтобы под каждой была строка подписи. А там уже по ситуации:
либо подписывать вообще каждую таблицу
либо просто удалять/скрывать лишние подписи во время разметки - это куда проще, чем добавлять.
Кстати, есть горячие клавиши для скрытия строк?
Можно доавтоматизировать это макросом, но тут вопрос:
Как макросом определить, что вот на этой строке кончается страница?

economist

По параметру 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

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

tema


tema

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

tema

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

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

rami

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

tema

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

rami

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

OOKapitan

Цитата: rami от 28 марта 2019, 22:02Интересует?
Не знаю, как ТС, а меня, а возможно и кого-то ещё - да, интересует.