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ů: 520

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.2.2.2

Offline

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

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

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)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
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ů: 520

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.2.2.2

Offline

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

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

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.2.2.2

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ů: 520

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.2.2.2

Offline

Zápatí