Имя: Пароль:
1C
1С v8
Формирование печати штрихкода стандартной компонентой 1С (Native API) - кривой шрифт
0 arsik
 
гуру
18.11.19
16:09
Пытаюсь стандартную компоненту приклеить к своей конфигурации.
Сам штрих код все ОК, а вот отображаемый текст совсем кривой - https://i.imgur.com/DEtVT8Y.png
Это как то правится?
1 Злопчинский
 
18.11.19
16:48
по идее в компоненте должна быть возможность установки размера шрифта для
2 arsik
 
гуру
18.11.19
16:52
(1) Там можно поменять размер шрифта и сам шрифт, но это не влияет на кривость отображения. По сути компонента генерирует картинку и мне отдает и вот я не понимаю, это у меня что то криво сделано или у всех так?
3 arsik
 
гуру
19.11.19
07:59
Апну?
4 arsik
 
гуру
19.11.19
08:52
Можно конечно еще один вариант реализовать.
Штрихкод без текста и текст штрихкода отдельным полем сверху наложить :)
но это как то не по людски.
5 Cyberhawk
 
19.11.19
09:06
Картинка растровая. Интересно а есть компоненты для генерации векторной картинки?
6 Йохохо
 
19.11.19
09:13
(2) debian?
7 arsik
 
гуру
19.11.19
09:18
(6) Win 10, платформа 8.3.13.1690 толстый клиент, компонента последняя из БПО 9.0.6.5
8 arsik
 
гуру
19.11.19
09:19
+(7) На центоси проверил, тоже самое.
9 d4rkmesa
 
19.11.19
09:26
(0) А покажите код? ШК в любом случае будет кривой, но можно поиграться с размером картинки и шрифта из параметров для компоненты. К примеру, установить фиксированный размер картинки, сделать свою процедуру, а не пользоваться программным интерфейсом БПО.
10 arsik
 
гуру
19.11.19
09:36
(9) Ну там код практически из БПО. Поигрался всеми параметрами, что используется в БПО ПараметрыШтрихкода, а так же со всеми из МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода. Безрезультатно.


Процедура ЗаполнитьРисунокШтрихкодом(Рисунок, ШтрихКод, ТипКода = Неопределено)
    
    Эталон = ПолучитьОбщийМакет("МакетДляОпределенияКоэффициентовЕдиницИзмерения");
    КоличествоМиллиметровВПикселеВысота = Эталон.Рисунки.Квадрат100Пикселей.Высота / 100;
    КоличествоМиллиметровВПикселеШирина = Эталон.Рисунки.Квадрат100Пикселей.Ширина / 100;
    ШиринаШтрихкода = Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселеШирина);
    ВысотаШтрихкода = Окр(Рисунок.Высота / КоличествоМиллиметровВПикселеВысота);
    
    
    ПараметрыШтрихкода = Новый Структура;
    ПараметрыШтрихкода.Вставить("Ширина"            , ШиринаШтрихкода);
    ПараметрыШтрихкода.Вставить("Высота"            , ВысотаШтрихкода);
    ПараметрыШтрихкода.Вставить("ТипКода"           , ?(ЗначениеЗаполнено(ТипКода),ТипКода,1));
    ПараметрыШтрихкода.Вставить("ОтображатьТекст"   , Истина);
    ПараметрыШтрихкода.Вставить("РазмерШрифта"      , 10);
    ПараметрыШтрихкода.Вставить("МонохромныйШрифт"  , Ложь);
    ПараметрыШтрихкода.Вставить("УголПоворота"      , 0);
    ПараметрыШтрихкода.Вставить("Штрихкод"          , ШтрихКод);
    ПараметрыШтрихкода.Вставить("ПрозрачныйФон"     , Истина);
    ПараметрыШтрихкода.Вставить("УровеньКоррекцииQR", 1);
    ПараметрыШтрихкода.Вставить("Масштабировать"    , Ложь);
    ПараметрыШтрихкода.Вставить("СохранятьПропорции", Ложь);
    ПараметрыШтрихкода.Вставить("ВертикальноеВыравнивание", 3); // ВертикальноеВыравниваниеКода: 1 - по верхнему краю, 2 - по центру, 3 - по нижнему краю.
    
    Рисунок.Картинка = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
КонецПроцедуры
11 d4rkmesa
 
19.11.19
09:58
ШиринаШтрихкода, ВысотаШтрихкода у вас какого размера получается? Может, слишком мелкий? Попробуйте просто вручную установить, а не рассчитывать от эталона. И размер шрифта побольше можно попробовать.
12 arsik
 
гуру
19.11.19
10:33
(11) 250 на 40, нормальный. У меня же размер элемента - реальный размер. Если шрифт побольше - это роли не  играет, так же криво.

Короче получилось. Непонятно, насколько это правильно, но работает.
Увеличил ШиринаШтрихкода, ВысотаШтрихкода и РазмерШрифта в 10 раз, а на элементе Рисунок указал свойство - пропорционально. Соответственно сам рисунок увеличился, но смасштабировался для вписывания в элемент. Визуально штрихкод стал шире.
Сканер читает штрихкод нормально.
13 arsik
 
гуру
19.11.19
10:37
+(12) проверил на сканере старые варианты с оригинальным размером, их не читает.
Нда. Век живи, век учись.
14 d4rkmesa
 
19.11.19
10:38
(12) Я примерно так же шаманил, у меня 300 на 96 со шрифтом 12-14 вроде нормально отработал, корявенько, но без пикселей, тоже реальный размер. В общем, костыли с этой компонентой, может имеет смысл с zint-ом разобраться.
15 arsik
 
гуру
19.11.19
10:40
(14) Его ставить везде надо, а эта нативная
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.