Буквально на днях встала задача программного размещения картинок в уже сформированной таблице, при этом картинки должны были быть с прозрачным фоном. Как результат изысканий появился данный класс - возможно кому-нибуть пригодится.
Что может:
Размещать в произвольном месте в таблице картинки с прозрачным фоном, с возможностью произвольного смещения картинки по оси X/Y, c возможностью поворота картинки на произвольный градус. С версии 1.3 - поддержка вывода 81 типа штрих-кодов, в том числе двухмерные QR Code, Data Matrix и т.д. (корректно кодирует кириллицу).
Где использовать:
- при вставке подписей и печатей
- при вставке фирменных логотипов
- для реализации корпоративного оформления документов
- при вставке текста
- при вставке штрих-кодов (список доступных типов ШК см. ниже)
- и т.д.
Что используется:
1. ВК TableDoc.dll - автор Трапезников Дмитрий (trad) (http://www.1cpp.ru/forum/YaBB.pl?num=1177688915/0) - используется возможность добавления в таблицу произвольного количество OLE-объектов произвольных размеров (обязательно)
2. ActiveX элемент управления bmp_1c.ocx (ActiveBMP) - автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?lid=2725&cid=111) - используется непосредственно для отображения картинок в таблице (обязательно)
3. ActiveX GFLAx (http://www.xnview.com/en/download_gfl.html) - для возможности произвольного поворота вставляемого изображения и конвертации входящего изображения в BMP (опционально)
4. ActiveX элемент управления text_1c.ocx (ActiveText) - автор Морев Андрей (Z1) (http://1c.proclub.ru/modules/mydownloads/personal.php?cid=129&lid=2726) - используется непосредственно для отображения картинок в таблице (опционально)
5. Шрифт EanG000.ttf - для вывода штрих-кодов EAN-13.
6. ActiveX элемент управления OcvitaBarcode.ocx - Разработчик: Ocvita (http://ocvita.ru/content/view/89/1/) На основе библиотеки zint (www.sourceforge.net/projects/zint) - используется для отображения ШК всевозможных типов в таблице
При наличии GFLAx - входящий файл картинки может быть практически любого графического формата, иначе - только BMP.
Свойства:
ЕстьПроизвольноеСмещение - использовать произвольное смещение при размещении объекта в таблицу (0 - нет; 1 - да);
ПроизвольноеСмещениеНач_X, ПроизвольноеСмещениеКон_X, ПроизвольноеСмещениеНач_Y, ПроизвольноеСмещениеКон_Y - границы в пикселях для произвольного смещения;
ЕстьПроизвольныйПоворот - использовать поворот на произвольный градус при размещении объекта в таблицу (0 - нет; 1 - да);
ПроизвольныйПоворотНач, ПроизвольныйПоворотКон - границы для ограничения градуса поворота;
Методы:
Процедура ПодключитьТаблицу(Таб) - подключение таблицы к классу
- Таб - объект типа "Таблица"
Функция ДобавитьИзображение(Лево, Верх, Право, Низ, Путь, Тип) - добавление изображения в таблицу, возвращает ссылку на добавленный объект ActiveBMP
- Лево, Право, Верх, Низ - координаты добавиления изображения в таблицу (см. "тип")
- Путь - путь к файлу изображения
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьТекст_Актив(Лево, Верх, Право, Низ, Текст, Тип) - добавление текста (с помощью ActiveText) в таблицу, возвращает ссылку на добавленный объект ActiveText
- Лево, Право, Верх, Низ - координаты добавиления изображения в таблицу (см. "тип")
- Текст- текст для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьШК_Актив(Лево, Верх, Право, Низ, ШК, Тип) - добавление штрих-кода (с помощью ActiveText) в таблицу, возвращает ссылку на добавленный объект ActiveText
- Лево, Право, Верх, Низ - координаты добавиления изображения в таблицу (см. "тип")
- ШК- штрих-код для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьТекст(Лево, Верх, Право, Низ, Текст, Тип) - добавление текста (стандартный объект Текст) в таблицу, возвращает ссылку область таблицы добавленного объекта
- Лево, Право, Верх, Низ - координаты добавиления изображения в таблицу (см. "тип")
- Текст- текст для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьШК(Лево, Верх, Право, Низ, ШК, Тип) - добавление штрих-кода (стандартный объект Текст) в таблицу, возвращает ссылку область таблицы добавленного объекта
- Лево, Право, Верх, Низ - координаты добавиления изображения в таблицу (см. "тип")
- ШК - штрих-код для добавления в таблицу
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Функция ДобавитьШК_Оквита(Лево, Верх, Право, Низ, ШК, ТипШК, Тип) - добавление штрих-кода (с помощью OcvitaBarcode) в таблицу, возвращает ссылку на добавленный объект OcvitaBarcode
- Лево, Право, Верх, Низ - координаты добавиления изображения в таблицу (см. "тип")
- ШК - штрих-код для добавления в таблицу
- ТипШК - тип штрих-код для добавления в таблицу, можно передавать цифровой код или строковое название (доступные типы ШК см. ниже)
- Тип - тип системы координат: 0 - пиксельная; 1 - табличная; 2 - левый верхний угол задается в табличной системе, в "право,низ" - задается смещение относительно левого верхнего угла
Пример добавления в таблицу подписи с печатью
....
Таблица = СоздатьОбъект("Таблица");
//заполнение таблицы
....
Таблица.Показать();
Печ = СоздатьОбъект("ИзображенияДляТаблицы");
Печ.ПодключитьТаблицу(Таблица);
Печ.ЕстьПроизвольноеСмещение = 1;
Печ.ЕстьПроизвольныйПоворот = 0;
Печ.ДобавитьИзображение(2,5,70,50,"C:\Подпись.gif",2);
Печ.ЕстьПроизвольныйПоворот = 1;
Печ.ПроизвольныйПоворотНач = -15;
Печ.ПроизвольныйПоворотКон = 15;
Печ.ДобавитьИзображение(300,150,430,280,"C:\Печать.gif",0);
Обновление от 09.06.2012 версия 1.1
1. При повороте картинки - размер картинки увеличивается пропорционально углу поворота - раньше это увеличение картинки компенсировалось увеличением
втавляемого ОЛЕ-объекта, теперь новое изображение после поворота обрезается до первоначальных размеров - имхо - так более правильно.
2. Особенностью ActiveBMP является то, что изображение из файла подгружается в ОЛЕ-объект в момент визуального просмотра таблицы/отправки на печать. Поэтому при массовой вставке объектов с произвольным поворотом в таблицу получалось что при просмотре всей таблицы в ОЛЕ-объекты подгружалось последнее "повернутое" изображение (корректировка картинки работала через один файл во временном каталоге). Сейчас для каждого такого изображения создается свой уникальный файл во временном каталоге. Данные файлы удаляются при следующем создании объекта "ИзображенияДляТаблицы" - это накладывает некоторое ограничение - если сформировать таблицу несколько раз подряд (без печати и визуального просмотра всех страниц), то изображения на невидимых страницах всех таблиц, кроме последней, будут отсутствовать.
Обновление от 18.06.2012 версия 1.2
1. Добавлена возможность размещения в таблице текста и штрих-кода двумя способами: с помощью ActiveX элемент управления bmp_1c.ocx (ActiveBMP) и с помощью стандартного объекта "Текст" (базовый функционал одинаков, но у ActiveX возможностей все таки больше - возможно кому то это будет критично). При этом работает возможность произвольного смещения и поворота добавляемого объекта.
2. Процедуры добавления объекта переделаны в функции, с возвратом ссылки на добавляемый объект, чтобы после добавления можно было "поиграть" со свойствами этих объектов.
Обновление от 20.06.2012 версия 1.3
1. Добавлена поддержка ActiveX элемента управления OcvitaBarcode.ocx - с его помощью стал доступным вывод в таблицу практически любого ШК, в т.ч. дмухмерных с поддержой кириллицы. Фон для таких объектов непрозрачный (кстати, цвет изображения и фона можно настраивать в свойствах объекта), отсутствует возможность произваольного поворота (в свойствах объекта она есть, но при этом 1Ска закрывается с ошибкой).
Доступные типы ШК:
1 : Code 11
2 : Code 2 of 5
3 : Interleaved 2 of 5
4 : Code 2 of 5 IATA
6 : Code 2 of 5 Data Logic
7 : Code 2 of 5 Industrial
8 : Code 3 of 9 (Code 39)
9 : Extended Code 3 of 9 (Code 39+)
13 : EAN (EAN-8/13 auto select)
16 : GS1-128
18 : Codabar
20 : Code 128 (subset auto select)
21 : Deutshe Post Leitcode
22 : Deutshe Post Identcode
23 : Code 16K
24 : Code 49
25 : Code 93
28 : Flattermarken
29 : GS1 DataBar-14
30 : GS1 DataBar Limited
31 : GS1 DataBar Expanded
32 : Telepen Alpha
34 : UPC A
37 : UPS E
40 : PostNet
47 : MSI Plessey
49 : FIM
50 : LOGMARS
51 : Pharmacode One-Track
52 : PZN
53 : Pharmacode Two-Track
55 : PDF417
56 : PDF417 Truncated
57 : Maxicode
58 : QR Code
60 : Code 128 (Subset B)
63 : Australia Post Standard Customer
66 : Australia Post Reply Paid
67 : Australia Post Routing
68 : Australia Post Redirection
69 : ISBN (EAN-13 with verification stage)
70 : Royal Mail 4 State (RM4SCC)
71 : Data Matrix
72 : EAN-14
75 : NVE-18
76 : Japanese Post
77 : Korea Post
79 : GS1 DataBar-14 Stacked
80 : GS1 DataBar-14 Stacked Omnidirectional
81 : GS1 DataBar Expanded Stacked
82 : PLANET
84 : MicroPDF417
85 : USPS OneCode
86 : Plessey Code
87 : Telepen Numeric
89 : ITF-14
90 : Dutch Post KIX Code
92 : Aztec Code
93 : DAFT Code
97 : Micro QR Code
98 : HIBC Code 128
99 : HIBC Code 39
102 : HIBC Data Matrix
104 : HIBC QR Code
106 : HIBC PDF417
108 : HIBC MicroPDF417
112 : HIBC Aztec Code
128 : Aztec Runes
129 : Code 32
130 : Composite Symbol with EAN linear component
131 : Composite Symbol with GS1-128 linear component
132 : Composite Symbol with GS1 DataBar-14 linear component
133 : Composite Symbol with GS1 DataBar Limited component
134 : Composite Symbol with GS1 DataBar Extended component
135 : Composite Symbol with UPC A linear component
136 : Composite Symbol with UPC E linear component
137 : Composite Symbol with GS1 DataBar-14 Stacked component
138 : Composite Symbol with GS1 DataBar-14 Stacked Omnidirectional component
139 : Composite Symbol with GS1 DataBar Expanded Stacked component
140 : Channel Code
141 : Code One
142 : Grid Matrix
Вступайте в нашу телеграмм-группу Инфостарт