Получение картинки из буфера обмена с использованием DynamicWrapperX

Программирование - Практика программирования

DynamicWrapperX Буфер обмена

5
Применяем DynamicWrapperX для работы с буфером обмена.

Коллеги, предлагаю еще один вариант получения картинки из буфера обмена.

Несмотря на то, что на Инфостарте есть ряд разработок по этой теме,

Еще про буфер обмена

Загрузка изображения из буфера обмена...

Форматированный документ - вставить картинку из буфера обмена

возможно, кому-то пригодится данная обработка.

Поддерживается работа на платформе 8.3, в режимах толстого клиента обычного приложения, толстого/тонкого клиентов управляемого приложения. Клиенты x32/x64.

Несколько слов о реализации. В процессе разработки, сначала был подготовлен вариант с использованием временного файла. Т.е. картинка из буфера сохранялась на диск и уже потом загружалась в 1С. Всё работало без проблем. Но сама по себе схема, с использованием файловых операций, не вызывала особого восторга.  Поэтому, была предпринята попытка отказаться от данного метода.

Вариант, с использованием потока, мне показался лучше. Но встал вопрос, о том, каким образом живые данные из потока переместить в 1С-й объект картинка?  В одной из приведенных выше  разработок это делалось с использованием 1С-й функции глобального контекста «Base64Значение(<Строка>)». Оставалось только загнать данные в Base64-строку. Откровенно говоря, писать свою собственную функцию для кодирования данных, совсем не хотелось. Более того, было понимание, что в самом движке 1С, эти функции уже реализованы. И это действительно так. В core83.dll есть несколько вариантов экспортной функции encode_base64 (аналог Base64Строка(<Значение>)). Таким образом, вызывая соответствующую функцию и передавая ей данные потока, мы получаем на выходе строку в кодировке Base64.

Дополнение: версия 2.
Во всей этой истории с использованием Base64-строки огорчало то, что для получения объекта "ДвоичныеДанные" выполнялась абсолютно не нужная работа по кодированию/раскодированию данных. В версии 2 данные потока прописываются напрямую в предварительно созданный объект "ДвоичныеДанные". Благодаря этому, мы получаем полноценный объект BinaryData с актуальными данными, без каких-либо дополнительных манипуляций.

Тут же: вместо PNG формата используется JPEG.

Дополнение: версия 3.
Добавлена поддержка Web-клиента x32/x64 (IE). Как показала практика, вариант с передачей данных через строку Base64, является наиболее универсальным. Код функции для кодирования данных в Base64, оказался не таким большим, как это виделось изначально. Буквально несколько десятков байт. Таким образом, это позволило отказаться от использования экспортной функции encode_base64 (версия 1), упростить код и в тоже самое время добавить поддержку web-клиента.

Тестирование проводилось выборочно на релизах начиная с 8.3.4.437 по 8.3.11.2924 (последний на момент публикации).

DynamicWrapperX (http://dynwrapx.script-coding.com/dwx/pages/dynwrapx.php).

5

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

Наименование Файл Версия Размер
Получение картинки из буфера обмена с использованием DynamicWrapperX:
.epf 15,01Kb
22.01.18
3
.epf 15,01Kb 3 Скачать
Получение картинки из буфера обмена с использованием DynamicWrapperX:
.epf 14,03Kb
26.04.18
0
.epf 3.1 14,03Kb Скачать
Получение картинки из буфера обмена с использованием DynamicWrapperX:
.epf 14,12Kb
26.04.18
1
.epf 2.2 14,12Kb 1 Скачать

См. также

Комментарии
Избранное Подписка Сортировка: Древо
1. Steelvan 25.01.18 09:42 Сейчас в теме
На толстый/тонкий клиент клиент можно забить.

Работает ли это в веб-клиенте ?
Работает ли это только в Widows ?
2. chessman 42 25.01.18 20:07 Сейчас в теме
(1) Работать будет только в Windows, поскольку Com.
В том виде, как сделано сейчас в веб-клиенте не взлетит, т.к.1С-е библиотеки на стороне веб-сервера.
Но если вопрос принципиальный, то конечно можно сделать, чтоб работало и на стороне веб-клиента (IE).
4. chessman 42 26.04.18 17:21 Сейчас в теме
5. Steelvan 26.04.18 23:09 Сейчас в теме
Оставьте свое сообщение