УТ 10.3. Платформы разные, результат одинаковый.
Есть печать QR кодов (для линейного ШК впрочем ситуация аналогичная и тоже неплохо бы исправить). Процедуры получения картинки стандартные 1с, вырезаны из какой-то конфигурации не очень давней вместе с компонентой.
На шаблоне картинка занимает весь шаблон, а в итоге только небольшую часть. Не растягивается никак. Как ее заставить растянуться полностью?
Есть печать QR кодов (для линейного ШК впрочем ситуация аналогичная и тоже неплохо бы исправить). Процедуры получения картинки стандартные 1с, вырезаны из какой-то конфигурации не очень давней вместе с компонентой.
На шаблоне картинка занимает весь шаблон, а в итоге только небольшую часть. Не растягивается никак. Как ее заставить растянуться полностью?
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Высота",Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселе) *5);
ПараметрыШтрихкода.Вставить("Ширина",Окр(Рисунок.Высота / КоличествоМиллиметровВПикселе) *5);
ПараметрыШтрихкода.Вставить("ТипКода" , 16);
ПараметрыШтрихкода.Вставить("ОтображатьТекст" , Истина);
ПараметрыШтрихкода.Вставить("РазмерШрифта" , 150);
ПараметрыШтрихкода.Вставить("Штрихкод" , СокрЛП(ТекстШК));
ПараметрыШтрихкода.Вставить("ПрозрачныйФон" , Истина);
ПараметрыШтрихкода.Вставить("УровеньКоррекцииQR", 1);
ПараметрыШтрихкода.Вставить("Масштабировать" , Истина);
ПараметрыШтрихкода.Вставить("СохранятьПропорции" , Ложь);
ПараметрыШтрихкода.Вставить("ВертикальноеВыравнивание", 2);//1 - по верхнему краю, 2 - по центру, 3 - по нижнему краю.
ПараметрыШтрихкода.Вставить("GS1DatabarКоличествоСтрок", 2);
ПараметрыШтрихкода.Вставить("УбратьЛишнийФон", Истина);
Картинка = ПечатьШК.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);
// Функция выполняет подключение внешней компоненты и ее первоначальную настройку.
// Возвращаемое значение: НЕОПРЕДЕЛЕНО - компоненту не удалось загрузить.
Функция ПодключитьВнешнююКомпонентуПечатиШтрихкода() Экспорт
ПодключениеВыполнено = ПодключитьВнешнююКомпоненту("ОбщийМакет.КомпонентаПечатиШтрихкодов", "КартинкаШтрихкода", ТипВнешнейКомпоненты.Native);
// Создадим объект внешней компоненты.
Если ПодключениеВыполнено Тогда
ВнешняяКомпонента = Новый("AddIn.КартинкаШтрихкода.Barcode");
Иначе
Возврат Неопределено;
КонецЕсли;
// Если нет возможности рисовать.
Если НЕ ВнешняяКомпонента.ГрафикаУстановлена Тогда
// То картинку сформировать не сможем.
Возврат Неопределено;
Иначе
// Установим основные параметры компоненты.
// Если в системе установлен шрифт Tahoma.
Если ВнешняяКомпонента.НайтиШрифт("Tahoma") Тогда
// Выбираем его как шрифт для формирования картинки.
ВнешняяКомпонента.Шрифт = "Tahoma";
Иначе
// Шрифт Tahoma в системе отсутствует.
// Обойдем все доступные компоненте шрифты.
Для Сч = 0 По ВнешняяКомпонента.КоличествоШрифтов -1 Цикл
// Получим очередной шрифт, доступный компоненте.
ТекущийШрифт = ВнешняяКомпонента.ШрифтПоИндексу(Сч);
// Если шрифт доступен
Если ТекущийШрифт <> Неопределено Тогда
// Они и будет шрифтом для формирования штрихкода.
ВнешняяКомпонента.Шрифт = ТекущийШрифт;
Прервать;
КонецЕсли;
КонецЦикла;
КонецЕсли;
// Установим размер шрифта
ВнешняяКомпонента.РазмерШрифта = 12;
Возврат ВнешняяКомпонента;
КонецЕсли;
КонецФункции
// Функция выполняет формирование изображения штрихкода.
// Параметры:
// ПараметрыШтрихкода
// Возвращаемое значение:
// Картинка - Картинка со сформированным штрихкодом или НЕОПРЕДЕЛЕНО.
Функция ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода) Экспорт
ВнешняяКомпонента = ПодключитьВнешнююКомпонентуПечатиШтрихкода();
Если ВнешняяКомпонента = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Ошибка подключения внешней компоненты печати штрихкода.'");
КонецЕсли;
// Зададим размер формируемой картинки.
ВнешняяКомпонента.Ширина = Окр(ПараметрыШтрихкода.Ширина);
ВнешняяКомпонента.Высота = Окр(ПараметрыШтрихкода.Высота);
ВнешняяКомпонента.АвтоТип = Ложь;
Если ПараметрыШтрихкода.ТипКода = 99 Тогда
ТипШтрихкодаВрем = ОпределитьТипШтрихкода(ПараметрыШтрихкода.Штрихкод);
Если ТипШтрихкодаВрем = "EAN8" Тогда
ВнешняяКомпонента.ТипКода = 0;
ИначеЕсли ТипШтрихкодаВрем = "EAN13" Тогда
ВнешняяКомпонента.ТипКода = 1;
// Если код содержит контрольный символ, обязательно указываем.
ВнешняяКомпонента.СодержитКС = СтрДлина(ПараметрыШтрихкода.Штрихкод) = 13;
ИначеЕсли ТипШтрихкодаВрем = "EAN128" Тогда
ВнешняяКомпонента.ТипКода = 2;
ИначеЕсли ТипШтрихкодаВрем = "CODE39" Тогда
ВнешняяКомпонента.ТипКода = 3;
ИначеЕсли ТипШтрихкодаВрем = "CODE128" Тогда
ВнешняяКомпонента.ТипКода = 4;
ИначеЕсли ТипШтрихкодаВрем = "ITF14" Тогда
ВнешняяКомпонента.ТипКода = 11;
ИначеЕсли ТипШтрихкодаВрем = "QR" Тогда
ВнешняяКомпонента.ТипКода = 16;
ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon2" Тогда
ВнешняяКомпонента.ТипКода = 14;
ИначеЕсли ТипШтрихкодаВрем = "EAN13Addon5" Тогда
ВнешняяКомпонента.ТипКода = 15;
Иначе
ВнешняяКомпонента.АвтоТип = Истина;
КонецЕсли;
Иначе
ВнешняяКомпонента.АвтоТип = Ложь;
ВнешняяКомпонента.ТипКода = ПараметрыШтрихкода.ТипКода;
КонецЕсли;
Если ПараметрыШтрихкода.Свойство("ПрозрачныйФон") Тогда
ВнешняяКомпонента.ПрозрачныйФон = ПараметрыШтрихкода.ПрозрачныйФон;
КонецЕсли;
Если ПараметрыШтрихкода.Свойство("GS1DatabarКоличествоСтрок") Тогда
ВнешняяКомпонента.GS1DatabarКоличествоСтрок = ПараметрыШтрихкода.GS1DatabarКоличествоСтрок;
КонецЕсли;
ВнешняяКомпонента.ОтображатьТекст = ПараметрыШтрихкода.ОтображатьТекст;
// Формируем картинку штрихкода.
ВнешняяКомпонента.ЗначениеКода = ПараметрыШтрихкода.Штрихкод;
// Угол поворота штрихкода.
ВнешняяКомпонента.УголПоворота = ?(ПараметрыШтрихкода.Свойство("УголПоворота"), ПараметрыШтрихкода.УголПоворота, 0);
// Уровень коррекции QR кода (L=0, M=1, Q=2, H=3).
ВнешняяКомпонента.УровеньКоррекцииQR = ?(ПараметрыШтрихкода.Свойство("УровеньКоррекцииQR"), ПараметрыШтрихкода.УровеньКоррекцииQR, 1);
// Для обеспечения совместимости с предыдущими версиями БПО.
Если Не ПараметрыШтрихкода.Свойство("Масштабировать")
Или (ПараметрыШтрихкода.Свойство("Масштабировать") И ПараметрыШтрихкода.Масштабировать) Тогда
Если Не ПараметрыШтрихкода.Свойство("СохранятьПропорции")
Или (ПараметрыШтрихкода.Свойство("СохранятьПропорции") И Не ПараметрыШтрихкода.СохранятьПропорции) Тогда
// Если установленная нами ширина меньше минимально допустимой для этого штрихкода.
Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода;
КонецЕсли;
// Если установленная нами высота меньше минимально допустимой для этого штрихкода.
Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда
ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода;
КонецЕсли;
ИначеЕсли ПараметрыШтрихкода.Свойство("СохранятьПропорции") И ПараметрыШтрихкода.СохранятьПропорции Тогда
Пока ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода
Или ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Цикл
// Если установленная нами ширина меньше минимально допустимой для этого штрихкода.
Если ВнешняяКомпонента.Ширина < ВнешняяКомпонента.МинимальнаяШиринаКода Тогда
ВнешняяКомпонента.Ширина = ВнешняяКомпонента.МинимальнаяШиринаКода;
ВнешняяКомпонента.Высота = (ВнешняяКомпонента.МинимальнаяШиринаКода / Окр(ПараметрыШтрихкода.Ширина)) * Окр(ПараметрыШтрихкода.Высота);
КонецЕсли;
// Если установленная нами высота меньше минимально допустимой для этого штрихкода.
Если ВнешняяКомпонента.Высота < ВнешняяКомпонента.МинимальнаяВысотаКода Тогда
ВнешняяКомпонента.Высота = ВнешняяКомпонента.МинимальнаяВысотаКода;
ВнешняяКомпонента.Ширина = (ВнешняяКомпонента.МинимальнаяВысотаКода / Окр(ПараметрыШтрихкода.Высота)) * Окр(ПараметрыШтрихкода.Ширина);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
// ВертикальноеВыравниваниеКода: 1 - по верхнему краю, 2 - по центру, 3 - по нижнему краю.
Если ПараметрыШтрихкода.Свойство("ВертикальноеВыравнивание") И (ПараметрыШтрихкода.ВертикальноеВыравнивание > 0) Тогда
ВнешняяКомпонента.ВертикальноеВыравниваниеКода = ПараметрыШтрихкода.ВертикальноеВыравнивание;
КонецЕсли;
Если ПараметрыШтрихкода.Свойство("РазмерШрифта") И (ПараметрыШтрихкода.РазмерШрифта > 0)
И (ПараметрыШтрихкода.ОтображатьТекст) И (ВнешняяКомпонента.РазмерШрифта <> ПараметрыШтрихкода.РазмерШрифта) Тогда
ВнешняяКомпонента.РазмерШрифта = ПараметрыШтрихкода.РазмерШрифта;
КонецЕсли;
Если ПараметрыШтрихкода.Свойство("РазмерШрифта") И ПараметрыШтрихкода.РазмерШрифта > 0
И ПараметрыШтрихкода.Свойство("МонохромныйШрифт") Тогда
Если ПараметрыШтрихкода.МонохромныйШрифт Тогда
ВнешняяКомпонента.МаксимальныйРазмерШрифтаДляПринтеровНизкогоРазрешения = ПараметрыШтрихкода.РазмерШрифта + 1;
Иначе
ВнешняяКомпонента.МаксимальныйРазмерШрифтаДляПринтеровНизкогоРазрешения = -1;
КонецЕсли;
КонецЕсли;
// Сформируем картинку
ДвоичныеДанныеКартинки = ВнешняяКомпонента.ПолучитьШтрихкод();
// Если картинка сформировалась.
Если ДвоичныеДанныеКартинки <> Неопределено Тогда
// Формируем из двоичных данных.
Возврат Новый Картинка(ДвоичныеДанныеКартинки);
КонецЕсли;
Возврат Неопределено;
КонецФункции
ПоказатьПрикрепленные файлы:


Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
//ПараметрыШтрихкода.Вставить("Высота",Окр(Рисунок.Ширина / КоличествоМиллиметровВПикселе) *5);
//ПараметрыШтрихкода.Вставить("Ширина",Окр(Рисунок.Высота / КоличествоМиллиметровВПикселе) *5);
ПараметрыШтрихкода.Вставить("Высота",250);
ПараметрыШтрихкода.Вставить("Ширина",250);
(2) Так высоту и ширину я и так задаю в пять раз больше размера области. Я так понял, потом картинка сжимается и четкость изображения лучше становится. Для линейных ШК это заметно, они иначе печатаются пунктиром... А на реальный размер изображения этот параметр не влияет никак. Размер задается размером табличного документа.
1. А какая версия компоненты печати штрихкода?
В одной из относительно старых версиях была проблема в компоненте - QR код печатался маленький, но потом это было исправлено. В версии Barcode_9.0.10.5 уже работало нормально.
2. В свойствах картинки в табличном документе стоит Размер картинки = Пропорционально?
В одной из относительно старых версиях была проблема в компоненте - QR код печатался маленький, но потом это было исправлено. В версии Barcode_9.0.10.5 уже работало нормально.
2. В свойствах картинки в табличном документе стоит Размер картинки = Пропорционально?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот