Автоматическиая вставка QR-кода через API и через Dispatcher во Writer/Calc

Автор economist, 3 июня 2020, 12:21

0 Пользователи и 1 гость просматривают эту тему.

economist

В LO 6.4 на смену неск. расширениям и поделкам пришел встроенный Вставка - Объект - QR код...
Работает хорошо с выделенным или вручную скопированным текстом, нет проблем с кириллицей.

Применений для QR - масса, напр. вставить в лев-верх углу всех Приказов, Положений, Заявлений, Счетов итп QR - http-ссылку, чтобы каждый с помощью камеры смартфона смог за 10 сек. убедиться что данный приказ еще не отменен, заява - зарегена, счет - оплачен итп. Причем хостить ссылки и слова "да/нет" можно где угодно в облаке, ничего секретного или ПД-шного в словах да/нет - нетути... Вот это и отличает настоящий эл. документооборот от "показушного" - ты держишь бумагу в руках со свойствами электронного дока. Круть!

А теперь о грустном. У меня не получилось вставить QR через API, а диспетчер не понимает переданный массив параметров (т.е. работает без ошибок, но показывает пустой диалог без параметров и с зачем-то включенной по умолчанию Высокой корр. ошибок, что делает код мельче в 4 раза). Вот как я делал, возможно жестко туплю:

sub QRCodeFromDispatcher
' https://api.libreoffice.org/docs/idl/ref/structcom_1_1sun_1_1star_1_1drawing_1_1QRCode.html#details
Dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Border"
args1(0).Value = 1
args1(1).Name = "ErrorCorrection"
args1(1).Value = 1
args1(2).Name = "Payload"
args1(2).Value = "my text"
dispatcher.executeDispatch(document, ".uno:InsertQrCode", "", 0, args1())


Подскажите как через API и как правильно через Диспетчер вставлять QR код родным для LO 6.4+ методом? И можно ли убрать "Высокая" коррекция ошибок по умолчанию? В Сервис-Параметры-Расширенные-Экспертные такого параметра не нашел.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

mikekaganski

С уважением,
Михаил Каганский

economist

Ок, подождем реализации.
Но уже сейчас можно использовать эту фичу QR код вот так (псевдокод):

1) Кодом создать текст ссылки и вставить левую пустую ячейку 2-х кол. таблицы вверху
(есть традиция так оформлять "шапки" доков - ну пусть и будет)
2) Скопировать текст ячейки, вызвать QR код, выйдет диалог
3) Выбрать мышью Низкий и нажать Enter. Появится код
4) Удалить текст из ячейки (почему-то сам очищается не всегда)


Макрос этот назначить на событие Печать. Профит.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Tillevion


economist

То что есть позволяет сделать всё что нужно. Озвучьте, что нужно? Тема благодатна для коллективного обсуждения, одна из немногих, выглядящих волшебством.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Tillevion

Цитата: economist от 19 июля 2024, 18:07То что есть позволяет сделать всё что нужно. Озвучьте, что нужно? Тема благодатна для коллективного обсуждения, одна из немногих, выглядящих волшебством.
Макрос из введенных пользователем данных в скрытом режиме формирует документ и отправляет его на печать или сохраняет в pdf в зависимости от режима работы. Документ так же содержит и уникальный QR-код, который необходимо разместить в определенном месте документа.

economist

Используйте QR правильно. Майки на красивых девчонках с платными sms - это правильно, хоть и нечестно.

Обычно qr-код нужен для перехода от бумажного (неэкологичного, лживого) домена - в цифровой, "зелёный" и неотрекаемый, скажем, на корпоративный сайт, где априори не может оказаться случайной инфы. Сайт будет подтверждать, например, что этот документ актуален. Или уже протух. Или при его сканировании местная ГНР (гонорейка) будет выезжать и брать плохиша ударом приклада по башке.

Ну или вам надо добиться чтобы при сканировании кода телефоном, подключенным к офисному wifi, у вас сразу открывался нужный справочник/док журнала в 1C/CRM/сайте/файловом хранилище. Ну чтобы не искать его долгим мышкотыканием. Эх... Хорошо если задачи интересны и сложны.

Если же у вас просто задача пометить документ модным квадратиком - это мелко...

Скорее всего вам придется в qr-коде кодировать https-ссылку. Но она должна быть максимально короткой - тогда квадратики будут крупные и будут легко распознаваться даже обычной веб-камерой на расстоянии 1-2 метра. Это требует думать заранее о многих вещах.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

economist

Чтобы связать любой бумажный док из любой ИС с его цифровой сущностью - лучше использовать 1*1 см код DataMatrix   с 4х кратной избыточностью (сработает даже если порвать его на 4/4). Вставить такой код лучше всего макросом на Basic,  который вызывает код на языке Python.

Этот код может сам найти пустое место в документе и разместить там квадратик на автомате. Но можно доверить позиционирование и людям. Тем более что сканы могут быть серы, распечатки могут полосить и автопоиск пустого места может  быть unsuccessful.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Tillevion

Цитата: economist от 26 июля 2024, 21:29Используйте QR правильно. Майки на красивых девчонках с платными sms - это правильно, хоть и нечестно.

Обычно qr-код нужен для перехода от бумажного (неэкологичного, лживого) домена - в цифровой, "зелёный" и неотрекаемый, скажем, на корпоративный сайт, где априори не может оказаться случайной инфы. Сайт будет подтверждать, например, что этот документ актуален. Или уже протух. Или при его сканировании местная ГНР (гонорейка) будет выезжать и брать плохиша ударом приклада по башке.

Ну или вам надо добиться чтобы при сканировании кода телефоном, подключенным к офисному wifi, у вас сразу открывался нужный справочник/док журнала в 1C/CRM/сайте/файловом хранилище. Ну чтобы не искать его долгим мышкотыканием. Эх... Хорошо если задачи интересны и сложны.
Это очень интересные задачи, но у меня пока весьма простой документооборот.

Цитата: economist от 26 июля 2024, 21:29Если же у вас просто задача пометить документ модным квадратиком - это мелко...

Скорее всего вам придется в qr-коде кодировать https-ссылку. Но она должна быть максимально короткой - тогда квадратики будут крупные и будут легко распознаваться даже обычной веб-камерой на расстоянии 1-2 метра. Это требует думать заранее о многих вещах.
К сожалению, наличие на документе QR-кода с определенной ссылкой это специфическое требование проверяющих органов. Я разобрался с расширением QR code Generator JS - старенькое расширение, оно все прекрасно формирует, но только для коротких текстов, а у моих https-ссылок 105 символов, и он с ними не справляется.

Цитата: economist от 26 июля 2024, 21:38Чтобы связать любой бумажный док из любой ИС с его цифровой сущностью - лучше использовать 1*1 см код DataMatrix   с 4х кратной избыточностью (сработает даже если порвать его на 4/4). Вставить такой код лучше всего макросом на Basic,  который вызывает код на языке Python.

Этот код может сам найти пустое место в документе и разместить там квадратик на автомате. Но можно доверить позиционирование и людям. Тем более что сканы могут быть серы, распечатки могут полосить и автопоиск пустого места может  быть unsuccessful.
А что это за макрос? И как его запустить макросом на Basic? Все необходимые параметры: текст, локацию, размер, цвет и т.п. можно передать, они все заранее известны. Очень желательно обойтись без пользователя.

economist

Для начала в свежайшем LO запишите макросы "штатной" вставки QR-кода, пробуйте менять размеры итд. Возможно все уже работает и так.

План Б - генерация QR-кода на языке Python (имхо, лучшая либа для этого - segno, но есть еще пара десятков). Запускать макросы на др. языке из Basic легко методом invoke() - ищите на Форуме примеры. Как ставить либы в LO Python - в ветке про Pandas.

Вставка готового PNG в нужное место/размер (или в Колонтитул для авто-повтора во всем Разделе/Документе) - заурядная для Basic-макроса задача, неоднократно на Форуме так же успешно решалась.

https-ссылки нужно сократить, способов много и почти все "админские", с rewrite-конфигами web-серверов. А то ведь можно до маразма дойти. Видел QR-код 8х8 см с 1,5 тыс. кириллических символов в URL-ссылке, ессно он распознавался плохо и через раз. Если же ссылки укоротить (купить "короткий" домен и прописать редирект) - то QR-код размером 1,5х1,5 см будет работать быстрее и лучше.

Есть и более изящные решения. Например, если хочется квадратик поменьше - просто напишем префикс в бесплатном софте для смартфонов, которым чаще всего и сканируем код. То есть https://youtalldomainname.ru/billing - этот префикс в ПО, а в QR код только сам, например ЛК /AC123456     
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

Tillevion

Цитата: economist от 27 июля 2024, 11:04Для начала в свежайшем LO запишите макросы "штатной" вставки QR-кода, пробуйте менять размеры итд. Возможно все уже работает и так.

План Б - генерация QR-кода на языке Python (имхо, лучшая либа для этого - segno, но есть еще пара десятков). Запускать макросы на др. языке из Basic легко методом invoke() - ищите на Форуме примеры. Как ставить либы в LO Python - в ветке про Pandas.

Вставка готового PNG в нужное место/размер (или в Колонтитул для авто-повтора во всем Разделе/Документе) - заурядная для Basic-макроса задача, неоднократно на Форуме так же успешно решалась.
Благодарю! Попробую разобраться.

Цитата: economist от 27 июля 2024, 11:04https-ссылки нужно сократить, способов много и почти все "админские", с rewrite-конфигами web-серверов. А то ведь можно до маразма дойти. Видел QR-код 8х8 см с 1,5 тыс. кириллических символов в URL-ссылке, ессно он распознавался плохо и через раз. Если же ссылки укоротить (купить "короткий" домен и прописать редирект) - то QR-код размером 1,5х1,5 см будет работать быстрее и лучше.

Есть и более изящные решения. Например, если хочется квадратик поменьше - просто напишем префикс в бесплатном софте для смартфонов, которым чаще всего и сканируем код. То есть https://youtalldomainname.ru/billing - этот префикс в ПО, а в QR код только сам, например ЛК /AC123456     
К сожалению, редирект нельзя настроить, ссылка должна быть прямая.

economist

Длинные ссылки и огромные "лопухи" QR-кодов все равно являются проблемой первоочередной.

"Погромисты" соревнуются кто больше укокошит деревьев за свою жизнь. Принтеры, кстати, привели к 5-ти кратному росту расхода бумаги, вопреки всем прогнозам.

Когда опустынивание Земли станет очевидно всем, мы задумаемся о причинах, но будет поздно: юг страны превратится в Магриб или Мангышлак в худшем их варианте, а деревья начнут расти лишь от Воронежа и севернее.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...