Insertar un codigo QR o DataMatrix
Publicado: Sab Nov 25, 2017 7:32 am
Hola a todos
Estube buscando alguna forma de colocar un código QR o DataMatrix en unas planillas en las que estoy trabajano y me topé con algo ineresante.
Utilizo un servicio web generador de códigos donde se le pasa el texto que se quiere codicar y la respuesta la captura y la inserta en la celda seleccionada.
La idea de colocar un QR o DataMatrix puede servir por ejemplo para colocar un enlace en la planilla ej (Obtener Ayuda) y si se esta en la PC te deriva a la página de ayuda pero si estas viendo la planilla impresa podés escanear el código con una plicación en el celular e ir directamente a la página de ayua. Otra idea podría ser colocar un código en las tarjetas de presentación y cuando se escanea te deriva a la página de la empresa, o ágina personal, etc.
Bueno no los aburro mas y aca les dejo el código y un ejemplo.
PD: La función que inserta el código también sirve para insertar imágenes directamente de la web. Lo único que hay que hacer es pasar como parámetro es la direcceción del enlace.
Estube buscando alguna forma de colocar un código QR o DataMatrix en unas planillas en las que estoy trabajano y me topé con algo ineresante.
Utilizo un servicio web generador de códigos donde se le pasa el texto que se quiere codicar y la respuesta la captura y la inserta en la celda seleccionada.
La idea de colocar un QR o DataMatrix puede servir por ejemplo para colocar un enlace en la planilla ej (Obtener Ayuda) y si se esta en la PC te deriva a la página de ayuda pero si estas viendo la planilla impresa podés escanear el código con una plicación en el celular e ir directamente a la página de ayua. Otra idea podría ser colocar un código en las tarjetas de presentación y cuando se escanea te deriva a la página de la empresa, o ágina personal, etc.
Bueno no los aburro mas y aca les dejo el código y un ejemplo.
Código: Seleccionar todo
REM ***** BASIC *****
Sub Main
if not Estoy_Conectado then ' verifico si estoy conectado a internet
exit sub
end if
TEXTO = ThisComponent.getSheets.getByName("Sheet1").getCellByPosition(1,2 ).String ' Leo la cadena a codificar
Texto_Titulo = " "
msgbox "Texto a codificar:" & Chr(10) & Chr(10) & TEXTO ' Muestro la cadena
oRango = ThisComponent.getCurrentController.getActiveSheet().getCellRangeByName( "C3" )
ThisComponent.getCurrentController.select( oRango )
Texto_Titulo = "QrCode " & Texto
encode_i_nigma(Texto,Texto_Titulo, "Q")
oRango = ThisComponent.getCurrentController.getActiveSheet().getCellRangeByName( "E3" )
ThisComponent.getCurrentController.select( oRango )
Texto_Titulo = "Code DataMatrix " & Texto
encode_i_nigma(Texto,Texto_Titulo, "D")
oRango = ThisComponent.getCurrentController.getActiveSheet().getCellRangeByName( "C5" )
ThisComponent.getCurrentController.select( oRango )
chart_apis_google(Texto)
oRango = ThisComponent.getCurrentController.getActiveSheet().getCellRangeByName( "E5" )
ThisComponent.getCurrentController.select( oRango )
Insert_Image("https://forum.openoffice.org/es/forum/styles/prosilver/imageset/logo_forum_es.png")
oRango = ThisComponent.getCurrentController.getActiveSheet().getCellRangeByName( "A1" )
ThisComponent.getCurrentController.select( oRango )
End Sub
function Estoy_Conectado As boolean
Dim Conexion As Boolean
Conexion = True
oGoogle = "http://google.com"
oSFA = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
if oSFA.exists(oGoogle)= false then
MsgBox ("No se puede acceder a " & oGoogle & chr(10) & "Verifique su conección")
Conexion = false
endif
Estoy_Conectado = Conexion
end function
sub encode_i_nigma(Encode_Texto, Texto_Titulo, Qr_DataM)
if len(Encode_Texto) < 1 then
msgbox "Cadena Vacía."
exit sub
elseif len(Encode_Texto) > 1950 then
msgbox "Excedió el límite max de 1950 caracteres."
exit sub
end if
ImgUrl = ""
If UCase(Qr_DataM) = "D" Then
ImgUrl =ConvertToURL("http://encode.i-nigma.com/DMtrx/img.php?d="& Encode_Texto &"&c="& Texto_Titulo &"&s=6")
end if
If UCase(Qr_DataM) = "Q" Then
ImgUrl =ConvertToURL("http://encode.i-nigma.com/QRCode/img.php?d="& Encode_Texto &"&c="& Texto_Titulo &"&s=6")
end if
If ImgUrl = "" Then
msgbox " Error use D Para DataMatrix o Q para QR"
exit Sub
end If
Insert_Image(ImgUrl)
end sub
sub chart_apis_google(Encode_Texto)
sURL = "http://chart.apis.google.com/chart?cht=qr&chs="
ImgUrl = ConvertToURL(sURL & "300x300" & "&chl=" & Encode_Texto & "&choe=UTF-8" )
Insert_Image(ImgUrl)
end sub
Sub Insert_Image(ImgUrl)
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = ImgUrl
args1(1).Name = "FilterName"
args1(1).Value = "<Alle formater>"
args1(2).Name = "AsLink"
args1(2).Value = false
args1(3).Name = "Style"
args1(3).Value = "Grafik"
dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())
end sub
PD: La función que inserta el código también sirve para insertar imágenes directamente de la web. Lo único que hay que hacer es pasar como parámetro es la direcceción del enlace.