Página 2 de 2

Como Imprimir Cód.Barras no Harbour 3.2 ?

Enviado: 13 Dez 2021 14:51
por fogueira
Obrigado , José Quintas.

O meu objectivo é produzir um ficheiro com a imagem do qrcode.

Vi o exemplo cairo.prg

Criei uma pasta para onde copiei o conteudo da pasta hbzebra e da pasta hbcairo

ao compilar tenho erro de

w0001 ambiguous reference "CAIRO_FONT_SLANT_NORMAL"
e
w0001 ambiguous reference "CAIRO_FONT_WEIGHT_NORMAL"

Não sei se existe alguma outra solução fácil, para um principiante, para gerar imagem do qrcode

Como Imprimir Cód.Barras no Harbour 3.2 ?

Enviado: 13 Dez 2021 18:55
por JoséQuintas
fogueira escreveu:Criei uma pasta para onde copiei o conteudo da pasta hbzebra e da pasta hbcairo
ao compilar tenho erro de
w0001 ambiguous reference "CAIRO_FONT_SLANT_NORMAL"
e
w0001 ambiguous reference "CAIRO_FONT_WEIGHT_NORMAL"
Não sei se existe alguma outra solução fácil, para um principiante, para gerar imagem do qrcode
Geralmente letra maiúscula é algo com #define, que tem em algum arquivo CH.
Provavelmente faltou #include "hbcairo.ch", mas CONFIRME qual o nome correto, deve ter no fonte de exemplo.

Ainda bem que compila com -w3 -es2, senão não iria saber que está faltando isso.

Como Imprimir Cód.Barras no Harbour 3.2 ?

Enviado: 13 Dez 2021 18:58
por JoséQuintas
fogueira escreveu:Criei uma pasta para onde copiei o conteudo da pasta hbzebra e da pasta hbcairo
Mas pera aí... copiou os exemplos ou os fontes da LIB?
basta acrescentar na compilação:

Código: Selecionar todos

hbzebra.hbc
hbcairo.hbc
E confirmar o #include, como já mencionei antes.

Compile primeiro o que tem na pasta test, que é exemplo de uso.
Feito isso, funcionando, aí parte pra sua rotina.

Como Imprimir Cód.Barras no Harbour 3.2 ?

Enviado: 13 Dez 2021 19:04
por JoséQuintas
um exemplo que uso em pdf:

Código: Selecionar todos

#include "hbzebra.ch"
...
METHOD DrawBarcodeQRCode( nX, nY, nLineWidth, cCode, nFlags )

   LOCAL nLineHeight, hZebra

   hZebra := hb_Zebra_Create_QRCode( cCode, nFlags )
   nLineHeight := nLineWidth
   IF hb_Zebra_GetError( hZebra ) == 0
      hb_Zebra_Draw( hZebra, { | x, y, w, h | HPDF_Page_Rectangle( ::oPDFPage, x, y, w, h ) }, nX, nY, nLineWidth, -nLineHeight )
      HPDF_Page_Fill( ::oPDFPage )
      hb_Zebra_Destroy( hZebra )
   ENDIF

   RETURN NIL
Note que tem
hb_Zebra_Create_QRCode() que faz o cálculo inicial
hb_Zebra_Draw(), que é onde passa o codeblock que faz o desenho, que nesse caso é uma função que desenha no PDF
hb_Zebra_Destroy() no final do uso

O que está no codeblock deve ser substituído por alguma rotina equivalente pra desenhar aonde você quer.
Geralmente uma rotina de desenhar retângulo, que faça isso no dispositivo aonde vai sair o retângulo (impressora, pdf, tela, etc)
Não precisa ser obrigatoriamente a hbcairo.