gifts2017

Шрифт для печати текста в рамочке.

Опубликовал Serg (Sykoku) в раздел Программирование - Работа с интерфейсом

Будет полезен для печати каждого символа текста в рамке без опасений за масштабирование, выход за пределы, настройки принтера  и пр.

Налоговая Украины решила освоить печать налоговых накладных и приложений к ним на спецбланках. Посему фирмы потихоньку приучают печатать нужную информацию для автоматического сканирования и распознавания в специально выделенных полях по принципу "один знак - одна ячейка".
Сидеть и рисовать "квадратики", подгоняя их размер под тип шрифта, выбираемый пользователем, драйвера принтера и масштаб страницы достаточно утомительно. Особенно через удаленное сопровождение. когда на экране одно - в окне просмотра - другое. а на принтере - третье.
Поэтому я выбрал достаточно простой (с моей точки зрения) способ - взять моноширинный шрифт (все символы имеют ячейки одного размера) и дорисовать окантовку. На все про все ушло менее получаса.
В моем случае за основу был взят ER Kurier 1251. Таблица символов расширена и для Unicode.

Примечание.

Поскольку это 1С, нельзя же совсем без кода. Следующие 2 функции рекомендую вставить в Глобальный модуль. А в тексте печатной формы вместо печати самой переменной вызывать функцию глРасширить(, новая_длина_дозаполняемая_символом_255). Почему не пробелом? А потому, что некоторые драйвера принтеров считают, что пробел - просто отступ, а не печатный символ.

// ===============================

Функция глМодуль(Чис)
    Если Чис < 0 Тогда
        Возврат (- Чис)
    Иначе
        Возврат Чис; 
    КонецЕсли;
КонецФункции           

// ===============================
Функция глРасширить(Тек, Длина) Экспорт // если отрицательная длина - заполнение справа
   
Перем Текст;
   
    Текст=СтрЗаменить(СокрЛП(Тек)," "," ");  // замена пробелов на 255-й символ или Символ(160)


    Пока СтрДлина(Текст)        Если Длина             Текст=Текст+" ";  //Это не пробел, а Alt+255  или Символ(160)
        Иначе
            Текст=" " + Текст;  //Это не пробел, а Alt+255  или Символ(160)
        КонецЕсли;   

    КонецЦикла;

    Возврат (Текст);

КонецФункции
// ===============================

 

Для тех, кто любит отправлять по электронной почте свои документы без встроенных шрифтов и без защиты (текстовый формат или в виде электронной таблицы), придется либо попросить установить у партнеров такой-же шрифт, либо рисовать "рамочку".

Желающие могут сами освоить процедуру создания собственного шрифта, благо ничего сложного в этом нет.

 

2011/02/04

Добавлен еще один вариант шрифта - с расширенной кодовой таблицей.

 

2011/02/05

Расширена клетка для шрифта BorderBold - теперь при печати в 2 ряда рамки сливаются. (Зато они стали чуть уже при печати в один ряд )

 

2011/02/07

То же самое сделано для Italic.

 

2011/02/08

Добавлен еще один вариант основного шрифта - с более узкой рамкой и точкой на I-украинское.

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
1C_Border.TTF
.ttf 129,50Kb
06.03.13
64
.ttf 129,50Kb 64 Бесплатно
1C_BorderBold.TTF
.ttf 228,38Kb
06.03.13
10
.ttf 228,38Kb 10 Бесплатно
1C_BorderItalic.OTF
.otf 137,50Kb
06.03.13
7
.otf 137,50Kb 7 Бесплатно
1C_Border2.TTF
.ttf 120,55Kb
06.03.13
11
.ttf 120,55Kb 11 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Vasily Kushnir (vasilykushnir) 01.02.11 18:59
Попытка защитана. Молодец.
Обидно , что сам до этого не допетрил... ;)
2. Vasily Kushnir (vasilykushnir) 01.02.11 20:09
Попытка защитана. Молодец.
3. Александр Зубцов (iov) 01.02.11 20:17
Очень элегантное решение
4. Vasily Kushnir (vasilykushnir) 01.02.11 20:19
Глюк какой-то с редактированием коммета: исправлление добвлено, но старый вариант сохранен, как новый коммет...
5. Григорий Лалов (lals) 01.02.11 20:29
Просто но со вкусом, причем с обалденной вкуснятиной.
Эти квадратики всю кровь выпивают без остатка,
Пока их нарисуешь пока значения им дашь, ужасть.
Как говорится решпект и уважуха.
6. Vasily Kushnir (vasilykushnir) 01.02.11 23:55
Вопрос автору: как выкручиваешься, когда надо вывести чило до 4-х знаков, но реально оно равно нулю, следовательно надо вывести 4 пустые клеточки (по твоему шрифту - 4 пробела)?
Ноль в самой правой клеточке не комфимильно смотрится. Я пока выкрутился так:
?(Число > 0, дгмРасширить(Число, 4), " ") // в кавычках 4 пробела
но как-то не очень...
7. Serg (Sykoku) 02.02.11 10:36
Если не секрет, где встречается "0"? - В моем случае такого не бывает. Если Налоговый номер - то там "Х". Нулевая дата/номер - вряд-ли. Телефоны у меня строковые - народ любит дописывать пробелы, скобки, буквы и т.д. В этом случае предварительно запускаю парсер строки и создаю на выходе новую, в которой ничего нет, кроме цифр. Могу предложить тот же подход. Сложнее другое - когда символов больше, чем нужно. Вопрос - какие выводить - первые или последние - придется решать самостоятельно.
И, кстати, лучше не пробел, а "Alt+255" - в Windows принцип WYSIWYG не работает почти никогда.

P.S.
Если кому не нравится начертание - сообщите, какой шрифт Вам больше по душе. Выложу рядом. Выбирать. например, тут
8. Валерий Завалко (ValeryZ) 02.02.11 13:15
Вот же ж ёлки-палки... Забыл выложить на infostart... Ещё 22-го января сделал Arial_NN.ttf
Не будет мне лавров первопроходца :))))
9. Александр Рытов (Арчибальд) 02.02.11 15:00
10. Serg (Sykoku) 02.02.11 15:27
(8)
Извини, я свой еще 4-го января наваял. Просто красочно оформил по просьбам трудящихся на этих выходных. И, насколько я знаю, Arial не моноширинный. Т.е. все символы будут в клеточках разного размера. Как по мне - некрасиво...
(6)
Некоторые просили вместо пробелов забивать нулями. Тут все просто - форматируем под длину знаков - "Ч(0)4" или "Ч04".
11. Vasily Kushnir (vasilykushnir) 02.02.11 15:39
(10) с нулями и форматом чисел проехали - просто вывожу нужное количество пробелов. А вот такой вариант: ИНН меньше 10 знаков и расширять надо не с начала, а с конца (в конце пробелы выводить)
12. Serg (Sykoku) 02.02.11 16:36
(11)
в глРасширить() второй параметр отрицательный. В данном случае -10.
13. Vasily Kushnir (vasilykushnir) 02.02.11 17:20
(12) Если бы...
дгмРасширить(ФирмаНомСвид, -10)
в ФирмаНомСвид сидит 8 знаков, та вот верхняя команда таки 8 и выводит, а не 10.
14. Serg (Sykoku) 02.02.11 17:54
(12)
2 вопроса.

1-й. Пробелы или Alt+255? - Пробелы не всегда печатаются. Встречал варианты и через один и самый последний и ни одного.



2-й. Длина строки что выдает? 8? И не убирали строку замены пробелов на 255-й символ?

Текст=СтрЗаменить(СокрЛП(Тек)," "," ");

первый - пробел, второй - ALT+255 - перебейте второй символ.

И строчках

Текст=Текст+" ";
...
Текст=" " + Текст;

перебейте на 255-й.

Можете проверить, работает ли функция, достаточно простым способом - заменить пробел нижним подчеркиванием. Будет чуть жирнее внизу, зато сам квадратик останется пустым и сразу поймете, где загвоздка.
15. Валерий Завалко (ValeryZ) 02.02.11 23:16
(10)Мой вариант - моноширинный. Я специально каждую букву поместил в квадрат. Притом, правая сторона любого квадрата "накрывается" левой стороной следующего квадрата, чтобы соединения литер не выглядели утолщенными относительно верхней и нижней линий. Ну, вобщем, вот: http://infostart.ru/public/81130/
16. kadrovik (kadrovik) 03.02.11 05:34
интересно, но можно было сделать буквы подальше от рамок ?
17. Vasily Kushnir (vasilykushnir) 03.02.11 08:17
(14) Блин! Молдаванин я.... Ну конечно ALT+255!
Хотя нет. Не то я делаю. Если удерживаю ALT и набираю 255, ничего не вводится.
Текст=Текст+Символ(255); вместо пробела выдает "я"
а вообще, как этот ALT+255 ввести?
Знак "_" срабатывает, но это как-то...
18. Serg (Sykoku) 03.02.11 11:18
(17)

Удерживая (нажав и не отпуская) "Alt" на дополнительной цифровой клавиатуре набрать 255.
Если через функцию символ - его код 160 - это особенности кодировки таблиц в Windows при преобразовании в Unicode.


(16)
Можно. Можете даже свой шрифт прислать (моноширинный желательно) - я нарисую рамку.
19. Vasily Kushnir (vasilykushnir) 03.02.11 13:57
(18) Неа, не хочет вставлятся через Alt, а вот Симв(160) сработало.
20. Vasily Kushnir (vasilykushnir) 04.02.11 09:47
А вообще чумовая весчь. Хочу еще раз поблагодарить автора за прекрасную идею. Сколько времени и нервов сэкономила...
Каким редактором шрифтов пользуешься?
21. Serg (Sykoku) 04.02.11 10:38
(20)

Шрифт создан (скорее, подредактирован) в FontLab Studio 5. Просмотр/тестирование - FontExpert 2009.
Документация в сети есть (на английском - http://www.scribd.com/doc/9298809/FontLab-Studio-5-Mac-Manual)
22. Vasily Kushnir (vasilykushnir) 04.02.11 13:22
(21) Если бы я еще что-то в английском кумекал.... У меня по пьяни и русский не очень - только с преводчиком :D
За подсказку спасибо. Когда-то пробовал свои шрифты рисовать, но видать редактор попался не очень - забросил.
FontLab Studio фришная или не совсем? Впрочем сворованное становится автоматически Free
23. Vasily Kushnir (vasilykushnir) 05.02.11 23:57
Спасибо за добавленные шрифты. Молодец - добротно сработано.
24. Vasily Kushnir (vasilykushnir) 09.02.11 10:06
(21) Скачал студио - доктор ругается на патч - троян кажет....
26. Vasily Kushnir (vasilykushnir) 09.02.11 12:39
(25) увы... торент через проксю не хочет...
Если можно намыль: kushnir@farmacia.ck.ua

Спасибо - получил. И доктор на лекарство не ругается ;)
27. Борис Белов (BorisBelov) 18.08.12 17:05
(0) Почему бы не использовать штатные методы Windows?
Или я что-то не понимаю?
На экране клеточки с "пробелом" чуть-чуть ниже, при печати все одинаково!
Прикрепленные файлы:
28. Serg (Sykoku) 18.08.12 20:36
(27) BorisBelov,
А "штатные методы" - это как? - подчеркивание шрифта? Или использовать спецшрифт с псевдографикой и дополнительно писать обработку строки - строчка с рамкой сверху, сам текст с разделителя посередине и строчка снизу? - Так точно не хочу, еще со студенчества задолбало базы из DBF на экран/принтер так вырисовывать...
А во вторых, не все живут на Уиндовзе...
29. Борис Белов (BorisBelov) 19.08.12 00:26
(28) В таблице документа 1С используется шрифт 1CBorder (Кириллический).
Реквизит "ПечСтрока", который надо печатать, имеет длину N1, количество клеток в печатной форме N2.
Остаются детали, о которых Вы писали: добавляем пробелы вначале или в конце.

В секции "Отчет" я вручную клеточки не рисовал. Название реквизита "ПечСтрока" разместилось побуквенно в клеточках при выборе шрифта. Это окно настройки печатной формы!
30. Sergey (serejkin) 13.10.12 13:47
Я не уверен в полезности данной публикации применительно к бланкам.

Мне частенько приходится делать бланки с квардратиками и хочу поделиться, что: во
1-ых уже готовые бланки даются чаще уже с прорисованными квадратиками
2-ых - за отклонение количества или размера квадратиков бланк часто не принимается. Мне недвано вернуи с НИ из за того что шрифт не в сторону советской власти
3-их написать функцию для записи в бланк что-то Сред(СтрокаЧтоВпихиваем,НомСимв,1) еще проще.
Особенно, если квадратики имеют несколько строк и фиксированное количество символов да еще вдобавок некоторые поля внутри статичны. И это в системе что через каждые несколько абзпцев например пустые квпрдарики строго по одной линии.

Разработка будет полезна для произвольного бланка, где хотят вставить просто слово в квардратиках.
31. Serg (Sykoku) 15.10.12 12:21
(30)
1. Далеко не всегда. Чаще всего - общая рамка без внутренних разделителей - меньше вероятность сбоя, особенно для самокопирующихся бланков.
2. К шрифту размер квадратиков или их количество отношения точно не имеют. А то, что налоговая будет искать повод придраться, чтобы отказать в налоговом кредите, особенно перед:
а) выборами
б) требованием собрать на 60% больше предыдущего периода (с учетом уже стребованных наперед денег)
я нисколько не сомневаюсь. Уже начали требовать документы за период, превышающий 5 лет.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа