powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Определить количество текста на последней странице
5 сообщений из 5, страница 1 из 1
Определить количество текста на последней странице
    #39711197
Cheriksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сижу уже второй день, ломаю голову над тем, как переверстать шаблон документа, чтобы отработать замечание от заказчика.
Постановка:
Есть документ, содержимое берется из ИС и заполняется определенный шаблон (используются поля - Merge Fields и какой-то вероятно изначально откуда-то позаимствованный код на основе дотнетовской библиотеки DocumentFormat.OpenXml их заполнения, но уже откровенно переполненный велосипедами и различными дополнениями для хитрых хотелок заказчика).
Содержимое - произвольное по объему, может получиться любое количество страниц. На каждой странице, кроме последней, внизу необходимо выводить блок для ФИО и подписи (ясно дело, тут через нижний колонтитул), но на последней - сразу же после завершения контента:
https://a.radikal.ru/a08/1810/3f/f375118021a3.png
Это, в итоге, оказался вопрос решаемый - CTRL+F9 и пишем выражение { IF { PAGE }={ NUMPAGES } "Тут какой-либо текст" "" }, а для последней тот же кусок с подписью ставим уже в конец основного содержимого документа
Но при определенном размере содержимого этот последний абзац с подписью уходит в одиночестве на последнюю страницу:
https://b.radikal.ru/b21/1810/27/60a8bc58604b.png
то есть по факту достаточно того, что есть подпись в нижнем колонтитуле на предпоследней странице и последняя страница бессмысленна не нужна. Вариант "не печатать последнюю страницу" был отвергнут заказчиком сразу же. Вариант , что запихнуть блок подписи и конец документа (прямоугольнички ЗА-ПРОТИВ и еще что-то) в какую-нибудь таблицу или подобное, что перенесется на следующую страницу целиком, скорее всего тоже не прокатит - пойдут вопросы "а че так много пустого места"

Таким образом вопрос такой - есть ли какая-то возможность через какие-нибудь вычисляемые поля с формулами определить, что данный абзац - единственный на странице? Или может есть какой-то другой обходной маневр, чтобы избежать переноса 1-2 строчек на новую страницу?
...
Рейтинг: 0 / 0
Определить количество текста на последней странице
    #39711269
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheriksoftманевр, чтобы избежать переноса 1-2 строчек на новую страницу?В Ворде с незапамятных времен есть команда "Сократить на страницу". В Word VBA F1 - Document.FitToPages Method
...
Рейтинг: 0 / 0
Определить количество текста на последней странице
    #39711489
Cheriksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,
Спасибо за совет, про эту опцию не знал. Однако все равно остается проблема - применять ее во время генерации документа во всех случаях не вариант, сильно уменьшается размер шрифта, когда у тебя текста на 1.7 страницы, скажем. Заказчику просто сказать про эту опцию тоже не вариант - их позиция в том, что "никто ничего редактировать не будет, нам нужно чтобы сразу нормальные документы в 100% случаев выдавались, чтобы сразу их на печать выводить", а уж тем более рассказывать пользователям на местах про опции где-то в дебрях менюшек.
Вопрос с определением количества контента, оставшегося на последней странице все равно остается открытым
...
Рейтинг: 0 / 0
Определить количество текста на последней странице
    #39711516
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheriksoft,
на VBA можно так - переводите на дотнет. myDoc - ссылка на документ Ворда
Код: vbnet
1.
2.
3.
  Set r = myDoc.GoTo(wdGoToPage, wdGoToLast)      'начало последней страницы
  r.MoveEnd wdStory                               'расширить диапазон до конца документа
  If r.Paragraphs.Count < 3 Then myDoc.FitToPages 'если на последней стр. менее 3 абзацев, применить сжатие
...
Рейтинг: 0 / 0
Определить количество текста на последней странице
    #39711519
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
или в одно действие
Код: vbnet
1.
  If myDoc.Range(myDoc.GoTo(wdGoToPage, wdGoToLast).Start).Paragraphs.Count < 3 Then myDoc.FitToPages
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Определить количество текста на последней странице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]