Штрих-код

Автор MasterLi, 27 января 2022, 21:40

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

MasterLi

Как вставить в форму или в отчёт штрих-код ?
Созданный, естественно, автоматически из определенных данных.

mikekaganski

#1
На данный момент нет API для вставки встроенного объекта.

Есть расширение LibreOffice Barcode Extension, у которого есть ограниченный API.
С уважением,
Михаил Каганский

JBrown

Есть вариант для Microsoft Office. (http://www.code128.narod.ru/). Статья от 2003 года. Давненько использовал макрос, описанный в ней, в OpenOffice.

Суть его в том, что заданная строка преобразуется в другую строку. Эту другую строку выводят специальным шрифтом. В итоге строка выглядит как настоящий штрих код. Такое решение вполне рабочее и возможно поможет Вам решить поставленную задачу.



economist

Расширение для OpenOffice|LibreOffice qrcodejs.oxt на JavaScript, работает в LO4-7, в т.ч. с кириллицей.
Вставка кода из выделенного текста легко записывается макрорекордером.

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

MasterLi

В Calc работает.

К Base не могу никак ничего прикрутить ...

MasterLi

Цитата: economist от 29 января 2022, 20:52Другой путь - макрос на Python, к которому есть десятки библиотек по штрих-кодам.

Видимо, единственный путь ... только я в этом на шарю совсем.
Ещё, наверно, на JavaScript можно.

Только где их писать и как запустить ?

economist

Нужно больше инфы. Куда нужны коды в Base? "Формы" в Base - это не что иное как документы Writer с контролами (эл-ми управления) плавающими поверх его, связанные с полями БД. Расширение qrcodejs.oxt вставляет код и во Writer (Вставка - QRCodeJS...), значит будет доступно макросам в Base. Библиотека QRCodeJS видна по Alt+F11. Макросов для вставки изображений в позицию курсора, в закладку. в яч. таблицы - тут на Форуме пробегал десяток. На английском Форуме быть ODB-примеры с QR-кодом для карточек складского учета. 
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

MasterLi

Цитата: economist от  1 февраля 2022, 08:19Нужно больше инфы.

Label в виде штрих-кода. Принимает значение из текстового поля.

economist

Передайте значение из текстового поля в процедуру QRCodeJS/Main или напрямую присвойте его переменной sContent (я про расширение qrcodejs.oxt). Полученное изображение нужно разместить, но не как Label, а как Image.   
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

MasterLi

Цитата: economist от  1 февраля 2022, 14:08Передайте значение из текстового поля в процедуру QRCodeJS/Main или напрямую присвойте его переменной sContent (я про расширение qrcodejs.oxt). Полученное изображение нужно разместить, но не как Label, а как Image.

Можете наглядно показать ?

economist

Код ниже вставит QR код расширением.

If (Not GlobalScope.BasicLibraries.isLibraryLoaded("QRcodeJS")) Then
   GlobalScope.BasicLibraries.LoadLibrary("QRcodeJS")
End If
Call QRcodeJS.QRcodeJS.Main


Строку текста можно передать в глобальную переменную, а в тексте расширения, процедура Sub Main добавить ее здесь, вместо выделенной строки:

oSelect = GetSelection(oDoc) ' <-сюда
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

MasterLi

Всё равно не понял.

У меня есть текстовое поле, в нём несколько цифр.

Как выдернуть из поля эти цифры, погрузить их в переменную, а потом из это переменной сделать QR ?

economist

#12
Для BASE я скорее всего напишу что-то несуразное (есть штатная мега-либа Acces2BASE в которой есть почти все что есть в Access VBA).

С "формами" в Base есть путаница, одно из объяснений тут: https://habr.com/ru/post/445304/ (полезны все 3 статейки)

А для Writer (Формы в BASE - это те же текстовые документы), это будет так:  

1. Вставляем текстовое поле и пишем макрос

Sub InsertQR
oForm =  ThisComponent.Drawpage.Forms.getByName("Форма")
qr_txt = oForm.getByName("Текстовое поле 1").Text
If (Not GlobalScope.BasicLibraries.isLibraryLoaded("QRcodeJS")) Then
   GlobalScope.BasicLibraries.LoadLibrary("QRcodeJS")
End If
Call QRcodeJS.QRcodeJS.Main(qr_txt)
End Sub


2. Правим начало модуля Main в расширении QRcodeJS

Sub Main(qr_txt) ' добавил параметр в ()
Dim oDoc as object
Dim sContent$, sPath$, sColor$, nSize
GlobalScope.BasicLibraries.LoadLibrary("Tools")

oDoc = ThisComponent

oSelect = qr_txt ' а было = GetSelection(oDoc)
       
       ' ниже без изменений



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