Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 21. 7. 2014 17:26:19

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

vložení QR kódu VYŘEŠENO

Ahoj všem, nemáte někdo zkušenost s rozšířením které generuje QR kód. Rozšíření je zde: http://extensions.services.openoffice.o … enerator-0. Dává to nějakou chybu, ale pro mě je ten kód úplná španělská vesnice, takže sám o opravě moc neuvažuji. Nemáte náhodou někdo makro na výrobu platebního QR kódu - má to být součást faktury.

Editoval ludviktrnka (23. 7. 2014 14:42:28)


LibreOffice 5.4.

Offline

#2 21. 7. 2014 18:28:14

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: vložení QR kódu VYŘEŠENO

To rozšíření je pouze pro fráninu a anglinu. Pro další řeči máte kontaktovat autora. Také je tam uvedená licence MIT - nevím co to je, ale už jsem se setkal s tím, že se jedná o individuálně koncipovanou právní formulaci a nemá ji nikdo jiný. Takže ani nezkoumám oč se jedná.
     Rozšíření pro QR kód jsem viděl ve více verzích, ale byly pro starší verze. testoval jsem hledání a našel jsem hodně odkazů - otestujte hledání 'LibreOffice extension QR code', nebo podobně 'OpenOffice extension QR code'.



PS:
Dokonce o tom nedavno psal Petr Valach - hledejte zde na portále.

Editoval neutr (21. 7. 2014 18:29:11)


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 21. 7. 2014 19:19:32

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: vložení QR kódu VYŘEŠENO

Jestli ještě mohu: tenhle kód funguje bezvadně v writeru, ale nedaří se mi jej rozchodit v calcu, přitom zahlásí jen že nedostal textový vstup, spustí dialog, kde lze vstup znovu zadat (resp. upravit, pokud se zadání podaří) a nakonec se QR kód vytvoří. Tzn. samotná výroba kódu funguje i v calcu bez problémů a bez úprav, to zadání se mi ale nedaří upravit. Věděli byste kde je zakopaný pes?
Jo tak on ten kód ale teky funguje pouze je-li umístěn ve složce "Makra a dialogy OpenOfiice", když je v nějakém modulu1 tak hlásí chybu i v tom tvaru uvedeném. Lze nějak editovat makro ve složce "Makra a dialogy OpenOffice", běžný způsob pomocí editoru úpravy nepovoluje.

Začínám taky pomalu chápat, že níže uvedený kód se neobejde bez nainstalovaných podpůrných souborů takže bych měl uvést že jsem jej získal zde: http://extensions.services.openoffice.o … -generator. Nicméně stále bych byl vděčný komukoli kdo mi poradí jak tento prográmek aplikovat na calc.

REM  *****  BASIC  *****

GLOBAL oDlg
GLOBAL oSelect as String
 
Sub Main
	oGoogle = "http://google.com"
	oSFA = CreateUnoService("com.sun.star.ucb.SimpleFileAccess")
	if oSFA.exists(oGoogle)= False then
		MsgBox (Trans(0) & oGoogle & chr(10) & Trans(1))
		exit sub
	endif
	oSelect = GetSelection()
'	if oSelect = false then exit sub
	StartDialog
End Sub

Sub StartDialog
	DialogLibraries.LoadLibrary("QRcodeGen")
    oBibli = DialogLibraries.GetByName("QRcodeGen")
	oDialog = oBibli.GetByName("QRcodeGen")
    oDlg = CreateUnoDialog(oDialog) 
    
	oContent = oDlg.GetControl("Content")
	oContent.Text = oSelect
	oDlg.GetControl("Label1").text = Trans(4)
	oDlg.GetControl("Label2").text = Trans(5)
	oDlg.GetControl("Label3").text = Trans(6)
	oDlg.GetControl("Label4").text = Trans(7)
	oDlg.GetControl("Cancel").label = Trans(8)
	
	oDlg.execute() 
End Sub 

Sub ExecDialog
	sSize = oDlg.getControl("Size").SelectedItem
	sContent = oDlg.getControl("Content").text
	sEncode = oDlg.getControl("Encode").SelectedItem
	if len(sContent) < 1 then
		ErrorHandling(Trans(9))
		exit sub 
	elseif len(sContent) > 160 then
		ErrorHandling(Trans(10))
		exit sub
	End if
	oDlg.endExecute()
	sURL = "http://chart.apis.google.com/chart?cht=qr&chs="
	oQR = ConvertToURL(sURL & sSize & "&chl=" & sContent & "&choe=" & sEncode)

	dim document   as object
	dim dispatcher as object
	rem ----------------------------------------------------------------------
	rem get access to the document
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	
	rem ----------------------------------------------------------------------
	dim args1(3) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "FileName"
	args1(0).Value = oQR
	args1(1).Name = "FilterName"
	args1(1).Value = "<Alle formater>"
	args1(2).Name = "AsLink"
	args1(2).Value = false
	args1(3).Name = "Style"
	args1(3).Value = "QRcodeGen"
	
	dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())
End Sub


Sub ErrorHandling(Text$)
 msgbox (Text$, 16, Trans(3))
End sub

Function GetSelection()
	oDoc = ThisComponent
	oQuoi = oDoc.CurrentSelection.ImplementationName
	if oQuoi = "SwXTextRanges" then
		oVC = oDoc.getCurrentController.getViewCursor
		'on error goto Erreur
		oTC = oVC.getText.createTextCursorByRange(oVC)
		GetSelection = oTC.string
		exit function
	endif
	Erreur:
	ErrorHandling(Trans(2))
End function

Function Localize()
	oLocal = GetStarOfficeLocale()
	oLocale = ThisComponent.CharLocale
	Localize = oLocale.Language
End function

Function Trans(nStr)
	english = array("No access to: ", _
					"Check if internet works!", _
					"Only text can be selected", _
					"Error", _
					"Size", _
					"Text content", _
					"Encoding", _
					"WebService provided by Google", _
					"Cancel", _
					"No text input in content!", _
					"Too much text: does not exceed 160 characters.", _
					)

	french = array(	"Aucun accès pour : ", _
					"Vérifiez si internet fonctionne !", _
					"Sélection de texte uniquement", _
					"Erreur", _
					"Taille", _
					"Contenu", _
					"Encodage", _
					"Service web fourni par Google", _
					"Annuler", _
					"Aucun texte dans le contenu !", _
					"Trop de texte : maximum 160 caractères.", _
					)

	if Localize = "fr" then
		Trans = french(nStr)
	else
		Trans = english(nStr)
	endif
End Function

Editoval ludviktrnka (21. 7. 2014 20:41:29)


LibreOffice 5.4.

Offline

#4 23. 7. 2014 12:04:07

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: vložení QR kódu VYŘEŠENO

Tak je to o moc snadnější než to vypadá. Na vše stačí jen vložení obrázku s touto adresou

http://chart.apis.google.com/chart?cht=qr&chs=300x300&chl=toto bude kodovany text&chld=H|0

A makro je prostě jen vložení obrázku, je to tak jednoduché, že mě až štve že jsem nad tím strávil hodiny vymýšlením ... už stačí jen poskládat adresu a je to hotové

sub vloz_qr
    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 = "http://chart.apis.google.com/chart?cht=qr&chs=300x300&chl=toto bude kodovany text&chld=H|0"
       args1(1).Name = "FilterName"
       args1(1).Value = "<All formats>"
       args1(2).Name = "AsLink"
       args1(2).Value = true
       args1(3).Name = "Style"
       args1(3).Value = "Graphics"
       dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())
       
end sub

... tak kdyby náhodou chtěl někdo poradit s výrobou přímo platebního qr kódu jako součásti faktury, tak už jsem se to všechno naučil - funguje to bezvadně :-)

Editoval ludviktrnka (23. 7. 2014 14:50:20)


LibreOffice 5.4.

Offline

#5 7. 1. 2015 09:47:44

pcenek
Člen
Registrace: 7. 1. 2015
Příspěvků: 1

Re: vložení QR kódu VYŘEŠENO

Výroba platebního QR kódu by mě zajímala. Můžeš sem prosím postnout příslušné makro a případně další potřebné info? Princip je jasný, ale odladit to chvíli trvá, a navíc to asi využije víc lidí.

Offline

#6 7. 1. 2015 10:37:44

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: vložení QR kódu VYŘEŠENO

Ahoj, samotnou tvorbu platebního vzorce najdeš nejlépe popsané na webu qr-platba.cz. Jakmile poskládáš text, který chceš zakódovat pak stačí vyvolat google api dle výše uvedeného návodu. Příklady jak to udělat jsem nahrál zde: https://dl.dropboxusercontent.com/u/14694746/QR_kod.ods. Jsou tam dvě makra na vložení kódu 1. na pozici kurzoru a 2. na přesnou pozici, pak je tam makro na smazání. Zároveň je v souboru i šablona na zakódování platebního příkazu. Tak doufám že ti to pomůže.


Ještě je možné využít přímo služby qr-platba.cz, tam se požadavek generuje trochu jinak, skript na webu jej pak přemění na platební kód ve správném formátu. Příklad je ueden na jejich webu, v makru se pak objeví adresa obrázku např. takto:
convertToURL("http://api.paylibo.com/paylibo/generator/czech/image?accountNumber=2171532&bankCode=0800&amount=238.50&currency=CZK&vs=1234567890&message=zprava&size=200")

Samozřejmě text account...atd až po message=zprava je vhodné opět vložit do proměnné načítané ze sešitu.

... do uvedeného souboru jsem tedy přidal ještě generování kódu z api.paylibo.com, tak si pak můžete vybrat.


Tady je příklad jak to mám použité na faktuře https://dl.dropboxusercontent.com/u/146 … _Trnka.pdf Pomocí přesného umístění a přesné velikosti obrázku to jde docela dobře.


Ještě porovnání api.paylibo.com a chart.apis.google.com: první má nevýhodu pevného formátu, velkého rámečku kolem a nápisu qr-platba - to jsou věci které se mohou ale také nemusí graficky hodit pro daný případ, výhodou je ale zaručeně platný (validní) SPAYD kód, tzn. pokud zadáte špatně třeba číslo účtu (právě se mi stalo že jsem zadal o číslici navíc) tak se prostě obrázek nevygeneruje. (to ale neznamená že nemůžete udělat chybu v částce ve variabilním symbolu atd ...) Druhý poskytovatel chart.apis.google.com má výhodu celkem libovolného formátu (velikost, přesnost, chybovost), nevýhodou je generování jakéhokoli textu bez vazby na validitu - tzn. jisté malé riziko chyby.

Editoval ludviktrnka (7. 1. 2015 14:09:36)


LibreOffice 5.4.

Offline

#7 5. 3. 2019 21:21:28

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: vložení QR kódu VYŘEŠENO

Nějaký šikovný borec udělal výrobu qr kódu jako čistou funkci v Calcu (bez využití serverových generátorů). Pokud to někoho zajímá je to zde: https://github.com/witwall/barcode-vba-macro-only


LibreOffice 5.4.

Offline

#8 6. 3. 2019 06:53:53

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 3,468

Re: vložení QR kódu VYŘEŠENO

V kódu je autor uveden :
Rem This software is distributd under The MIT License (MIT)
Rem Copyright © 2013 Madeta a.s. Jiří Gabriel
     Ještě jsem to netestoval, ale je to psáno v čistém VBA. Z toho plyne, že uživatelé Apache Open Office mají smůlu. Nejzajímavější je na tom skutečnost, že MSO mělo tuto funkci zabudovanou v balíku. Samzřejmě podmínkou bylo mít legální SW Microsoftu - tedy licence EULA. Popsané oprávnění užívat podle licence MIT je v podstatě velice podobné s Creative Common BY-SA.
     Mimo toho že autor je čech, (respektive majitelem autorských práv je MADETA) je celkem příjemné zjištění, že autor (souhlasně vlastník) uvedl přímo vzor ODF - Calc. Myslím že tímto je posvěceno nejméně používání pod OS Windows, ale nebál bych se použití v jakékoliv sféře i pod Linuxem.


Dobrý tip pane Trnka


Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 14. 1. 2022 15:51:55

ludviktrnka
Člen
Registrace: 9. 7. 2009
Příspěvků: 711

Re: vložení QR kódu VYŘEŠENO

Jen pro zajímavost určitý posun v QR kódech. Testoval jsem různé možnosti a ledasco má nějaké mouchy, zejména co se týká rychlosti. Nejefektivněji vypadá využití nějakého interního programu, který lze volat přes příkazový řádek a obrázek uložit a následně vložit na stránku. Takový program je např. zde:https://www.nirsoft.net/utils/qr_code_generator.html. Příkaz se pak formuluje pomocí Shell.

Sub GenQr

REM makro umísťuje QR kód generovaný programem SimpleCodeGenerator.exe,
REM který je zdarma ke stažení zde: https://www.nirsoft.net/utils/qr_code_generator.html
REM obrázek s QR kódem je uložen do počítače a poté umístěn do Listu v přesné velikosti a na přesné souřadnice

  dim doc as object, sList as object

  doc = thisComponent
  sList = doc.Sheets.getByName("List1")
  
  qrkod = sList.GetCellRangeByName("A1").String 'zadání pro kódování do QR
  adresa = sList.GetCellRangeByName("A2").String 'plná adresa pro uložení (předpokládá se adresa bez nesmyslných znaků a mezer, jinak je potřeba použít convertToURL)
   
  shell("c:\simplecodegenerator\SimpleCodeGenerator.exe", 0, "/Save '" & qrkod & "' '" & adresa & "' 10", True)
  
  Dim oDrawPage As Object
  Dim oGraphic As Object, oObj as object
  Dim aSize As New com.sun.star.awt.Size
  Dim aPosition As New com.sun.star.awt.Point
  
  oDrawPage = sList.DrawPage
  
  for i = oDrawPage.Count - 1 to 0 step -1
    oObj = oDrawPage.getByIndex(i)
    If Not oObj.supportsService("com.sun.star.drawing.ControlShape") Then   'maže vše kromě tlačítek
       oDrawPage.remove(oObj)
    End If
  next i
   
  oGraphic = doc.createInstance("com.sun.star.drawing.GraphicObjectShape")

  aPosition.X = 16340
  aPosition.Y = 3200
  oGraphic.setposition(aPosition)
  
  aSize.width=3600
  aSize.height=3600
  oGraphic.setsize(aSize) 
  
  oGraphic.GraphicURL = convertToURL( adresa )
  oDrawPage.add(oGraphic)

  
end sub

P.S. jen pro úplnost, generuji jednorázově cca 400 kódů, takže rozdíly v rychlosti v řádu sekund, jsou nakonec rozdíly v desítkách minut. Navíc použití vzdálených API je nespolehlivé ...

Editoval ludviktrnka (14. 1. 2022 16:25:14)


LibreOffice 5.4.

Offline

#10 22. 1. 2022 18:26:10

zcr
Člen
Registrace: 10. 6. 2019
Příspěvků: 113

Re: vložení QR kódu VYŘEŠENO

Offline

#11 23. 1. 2022 14:16:09

kamlan
Člen
Registrace: 15. 9. 2016
Příspěvků: 368

Re: vložení QR kódu VYŘEŠENO

K tomu generování QR kódů v současnosti v Libre jsem něco sepsal zde https://uloz.to/file/denm0PSBLUHu/qr-ko … ce-7-2-pdf

Offline

Zápatí