Перенос текста при печати нескольких строк
Добрый день!
Стоит задача из 1с v8 выводить теrст при распечатке которого он должен попадать на фиксированный подкладываемый бланк. Проблема в следующем. Допустим нужно вывести текст в две строки. Первая строка начинается с середины листа, длина 10 см (условно).
Вторая строка идет с начала листа, длина 20см. Каким образом вывести сплошной текст уместив его на обе строки максимально их заполнив?
Стоит задача из 1с v8 выводить теrст при распечатке которого он должен попадать на фиксированный подкладываемый бланк. Проблема в следующем. Допустим нужно вывести текст в две строки. Первая строка начинается с середины листа, длина 10 см (условно).
Вторая строка идет с начала листа, длина 20см. Каким образом вывести сплошной текст уместив его на обе строки максимально их заполнив?
По теме из базы знаний
- Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3
- Загрузка чеков ФНС в документы 1С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ
- Переход с 1С:УПП на 1C:ERP: Задача переноса печатных форм в сжатые сроки. Конструктор печати
- Переход с 1С:УПП на1C:ERP: Перенос остатков и затянувшееся начало работы в ЕРП
- Печать нескольких документов в Word
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Пробелы особо не помогут.
Я реализовал 2 варианта: сначала сделал алгоритм который искал пробелы и переносил по отдельным словам - пропадало много места. Затем использовал алгоритм переноса слов по СЛОГАМ. Стало лучше. Но в обоих случаях необходимо указывать количество символов ПОМЕЩАЕМЫХ на строке (например для первой я указываю 15 символов), но учитывая что каждый символ умеет свою ширину(например,если в предложении узкие символы, то уместить в 10 см можно 20 символов а если широкие и заглавные то 10) я пришел к тому что нужно задавать для каждого символа условный вес (ширину) (при условии что шрифт меняться не будет).
Может у кого идеи есть получше?
Я реализовал 2 варианта: сначала сделал алгоритм который искал пробелы и переносил по отдельным словам - пропадало много места. Затем использовал алгоритм переноса слов по СЛОГАМ. Стало лучше. Но в обоих случаях необходимо указывать количество символов ПОМЕЩАЕМЫХ на строке (например для первой я указываю 15 символов), но учитывая что каждый символ умеет свою ширину(например,если в предложении узкие символы, то уместить в 10 см можно 20 символов а если широкие и заглавные то 10) я пришел к тому что нужно задавать для каждого символа условный вес (ширину) (при условии что шрифт меняться не будет).
Может у кого идеи есть получше?
(10) YNik, (7) AHDP, вариант хороший, в принципе бы подошел, только есть еще одна проблема. Межстрочный интервал может быть в бланке совершенно разный или вообще различным внутри одного выводимого текста. Например может быть так:
Примечание: _________________
_______________________________
(фио, адрес,
_______________________________
телефон)
Т.е. здесь видно что межстрочный интервал междустроками 1 и 2 отличается от интервала от 2 и 3.
А используя перенос платформы насколько я знаю его нельзя изменить никак.
Примечание: _________________
_______________________________
(фио, адрес,
_______________________________
телефон)
Т.е. здесь видно что межстрочный интервал междустроками 1 и 2 отличается от интервала от 2 и 3.
А используя перенос платформы насколько я знаю его нельзя изменить никак.
ТабличныйДокумент (SpreadsheetDocument)
ПроверитьВывод (CheckPut)
Синтаксис:
ПроверитьВывод(<Таблицы>)
Параметры:
<Таблицы> (обязательный)
Тип: Массив; ТабличныйДокумент.
Массив из проверяемых таблиц или табличный документ.
Возвращаемое значение:
Тип: Булево.
Истина - умещаются; Ложь - в противном случае.
Описание:
Проверяет, умещаются ли переданные табличные документы на страницу при печати.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
При возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.
Пример:
Т.Добавить(ШапкаДокумента);
Т.Добавить(СтрокаДокумента);
Т.Добавить(ПодвалДокумента);
Если Не ТабДок.ПроверитьВывод(Т) Тогда
Сообщить("Документ не умещается на страницу!");
КонецЕсли;
См. также:
ТабличныйДокумент, метод ПроверитьПрисоединение
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот