Problemas com Fonte de Codigo de Barras
Moderador: Moderadores
Problemas com Fonte de Codigo de Barras
Bom dia! estou fazendo uma rotina de impressão de etiquetas de código de barras usando as fontes ( EAN13,barcode font ) e todas as outras que achei no forum e não funciona até imprime as barras mais o leitor que tenho não le,fiz um teste gerando as barras pelo WORD usando as fontes e ficam diferente das fontes impressas no produto, minha pergunta existem alguma segredo para uso destas fontes ou tenho que usar alguma outra lib para gerar o codigo, estou usando o xharbour com win32prn.
Se alguém tiver alguma outra dica fico muito grato.
Frazato
Se alguém tiver alguma outra dica fico muito grato.
Frazato
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Problemas com Fonte de Codigo de Barras
Vc pode usar OLE e continuar com word p/ imprimir as etiquetas.
Contudo, se informar mais tipo o código que está usando acredito que mais pessoas poderá auxiliar melhor.
Saudações,
Itamar M. Lins Jr.
Contudo, se informar mais tipo o código que está usando acredito que mais pessoas poderá auxiliar melhor.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Problemas com Fonte de Codigo de Barras
Boa tarde! obrigado pela resposta, segue o codigo que estou usando, esta gerando as barras só que o leitor de codigo de barras não le, estou usando um ean13 valido e estão ficando diferente as barras usando a que estou gerando com a que esta no produto fisico, ja testei todos os tipos de fontes que estao no codigo e nada, geram as barras mais o leitor não le!
Código: Selecionar todos
/****************************************
* Compilar: hbmk2 demo.prg -lhbwin
****************************************/
PROCEDURE Main()
LOCAL nPrn := 1
//LOCAL aPrn := WIN_PRINTERLIST()
lOCAL aPrn := GetPrinters() // Pega Impressoras
CLS
SETMODE(25,80)
IF Empty( aPrn )
Alert("Nenhuma impressora Instalada - Encerrando programa")
QUIT
ENDIF
DO WHILE nPrn != 0
CLS
@ 3, 0 SAY "Escolha a impressora"
@ 5, 9 TO MaxRow()-9, MaxCol()-9
nPrn := AChoice( 6, 10, MaxRow() - 10, MaxCol() - 10, aPrn, .T.,, nPrn )
IF nPrn != 0
PrnTest( aPrn[ nPrn ] )
ENDIF
ENDDO
RETURN
*******************************************
Function PrnTest(cPrinterName)
*******************************************
local cTexto, nLinhas, nA, cLinha, oBMP
local oPrinter := win_prn():New(cPrinterName)
oPrinter:Landscape:= .F.
oPrinter:FormType:= 9
oprinter:SetPrintQuality(-1)
oPrinter:Copies:= 1
IF !oPrinter:Create()
alert("ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar se a Impressora esta Ligada.")
return NIL
else
IF !oPrinter:StartDoc("Codigo Barras")
alert("ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar a Impressora")
Return NIL
endif
FOR TT=1 TO 2
oPrinter:newline()
NEXT
*oPrinter:Bold(0)
*oPrinter:TextOut("Teste impressao Codigo de Barras")
*oPrinter:Bold(0)
*oPrinter:TextAtFont( oPrinter:MM_TO_POSX( 30 ), oPrinter:MM_TO_POSY( 60 ), "1234567890", "barcod39", 24, 0 )
*oPrinter:TextAtFont( oPrinter:MM_TO_POSX( 30 ), oPrinter:MM_TO_POSY( 80 ), "1234567890", "Code 128", 24, 0 )
*
*oPrinter:TextAtFont( oPrinter:MM_TO_POSX( 30 ), oPrinter:MM_TO_POSY( 100 ), "1234567890", "Code-93", 24, 0 )
nLinha1 := 10//5
nColuna1:= 10//5
nEtiquetas_Colunas := 11
nMaximo_etq_formulario := 33//42
nMaxColunas := 3
nColuna := 1
nEtiqueImpressa := 0
nMaxEtiquetaFolha := 1
//nSpaco_Entre_Coluna := 5
nSpaco_Entre_tag_Linhas := 15//15
nPosicao_Coluna1 := 10 //15//0
nPosicao_Coluna2 := 70
nPosicao_Coluna3 := 150//130
wListaEtiquetas := {}
For x:= 1 to 27//100
Aadd(wListaEtiquetas,{'Produto...'+Str(x,2),StrZero(7898352570134,13),'R$:'+Transf(x,"@EZ 9999.99"),'Codigo:'+str(x,5)})
Next
For i:= 1 to Len(wListaEtiquetas)
cDescricao := wListaEtiquetas[i,1]
cCodigoEan := wListaEtiquetas[i,2]
cPrecoVenda:= wListaEtiquetas[i,3]
cCodigoInterno:=wListaEtiquetas[i,4]
oPrinter:Bold(0)
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1 ), "DESCRICAO PRODUTO ", "Courier New", 10, 0 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1+5), oPrinter:MM_TO_POSY( nColuna1+7 ), "1234567890", "barcod39", 18, 0 )
*oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1+30), oPrinter:MM_TO_POSY( nColuna1+7 ), "R$ 544,35", "Courier New", 12, 0 )
*oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+12 ), "Codigo:15766- Ean:654645444 ", "Courier New Bold", 09, 0 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1 ), cDescricao, "Courier New", 10, 0 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+7 ), cCodigoEan, "barcod39", 18, 0 )
// oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+7 ), cCodigoEan, "EAN-13", 26, 0 )
//cCodigoEan := '7896733600043'
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+7 ), cCodigoEan, "barcod39", 26,5 )
oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+7 ), cCodigoEan, "EAN-13", 26, 0 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+7 ), cCodigoEan, "Interleaved 2of5 NT", 25, 5 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+7 ), cCodigoEan, "barcode font",26,0 )
//Barcoding
// oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+7 ), cCodigoEan, "barcodefont", 14, 10 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1+30), oPrinter:MM_TO_POSY( nColuna1+7 ), cPrecoVenda, "Courier New", 12, 0 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1+12 ), cCodigoInterno+' EAN:'+cCodigoEan, "Courier New Bold", 09, 0 )
nLinha1 := nLinha1
nColuna1:= nColuna1+12+nSpaco_Entre_tag_Linhas
nEtiqueImpressa ++
If nEtiqueImpressa == nEtiquetas_Colunas
nColuna++
nEtiqueImpressa :=0
nColuna1 :=nPosicao_Coluna1//10
Endif
If nColuna==1
ElseIf nColuna==2
nLinha1 := nPosicao_Coluna2//60
ElseIf nColuna==3
nLinha1 := nPosicao_Coluna3//120
Else
nColuna1 := 10//5
Endif
If nMaxEtiquetaFolha++ >= nMaximo_etq_formulario// := 30
oPrinter:newPage()
nMaxEtiquetaFolha := 0
nLinha1 := 10//5
nColuna1:= nPosicao_Coluna1 //10//5
nColuna := 1
Endif
Next
oPrinter:EndDoc()
oPrinter:Destroy()
ENDIF
RETURN NIL- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Problemas com Fonte de Codigo de Barras
O EAN 13 tem checagem de digito, voce não pode usar qualquer numero.
Voce pode habilitar ou não a checagem de digito no leitor e a impressão do digito.
Saudações,
Itamar M. Lins Jr.
Voce pode habilitar ou não a checagem de digito no leitor e a impressão do digito.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Problemas com Fonte de Codigo de Barras
este código ean13 e valido peguei direto de um produto, só que quando imprimo usando a fonte ean32 gera diferente do impresso no produto, ai não le. fiz o teste usando o programa da pimaco e ele gera o ean32 igual ao do produto inclusive o calculo do digito esta OK.. sera q existe alguma de habilutatr a impressão com checagem de dígito pra eu não ter q configurar o leitor
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Problemas com Fonte de Codigo de Barras
Essa fonte EAN13 que vc está usando é a mesma que usou no word ?
O tamanho do código tem que ser no padrão do leitor, é o mesmo tamanho que vc usou no word ?
Eu sei que não é a resposta que vc está querendo.
Eu lembrei que tinha visto um exemplo usando a hbzebra, quando passei a usar o MRBoleto achei fácil o uso.
Saudações,
Itamar M. Lins Jr.
O tamanho do código tem que ser no padrão do leitor, é o mesmo tamanho que vc usou no word ?
Eu sei que não é a resposta que vc está querendo.
Eu lembrei que tinha visto um exemplo usando a hbzebra, quando passei a usar o MRBoleto achei fácil o uso.
Código: Selecionar todos
/* Copyright 2010 Viktor Szakats (vszakats.net/harbour) */
#require "hbzebra"
#require "hbhpdf"
PROCEDURE Main()
LOCAL pdf := HPDF_New()
LOCAL page := HPDF_AddPage( pdf )
HPDF_Page_SetSize( page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT )
HPDF_Page_SetFontAndSize( page, HPDF_GetFont( pdf, "Helvetica", NIL ), 12 )
DrawBarcode( page, 20, 1, "EAN13", "477012345678" )
DrawBarcode( page, 40, 1, "EAN8", "1234567" )
DrawBarcode( page, 60, 1, "UPCA", "01234567891" )
DrawBarcode( page, 80, 1, "UPCE", "123456" )
DrawBarcode( page, 100, 1, "CODE39", "ABC123" )
DrawBarcode( page, 120, 1, "CODE39", "ABC123", HB_ZEBRA_FLAG_CHECKSUM )
DrawBarcode( page, 140, 0.5, "CODE39", "ABC123", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE2_5 )
DrawBarcode( page, 160, 1, "CODE39", "ABC123", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( page, 180, 1, "ITF", "1234", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( page, 200, 1, "ITF", "12345678901", HB_ZEBRA_FLAG_CHECKSUM )
DrawBarcode( page, 220, 1, "MSI", "1234" )
DrawBarcode( page, 240, 1, "MSI", "1234", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( page, 260, 1, "MSI", "1234567", HB_ZEBRA_FLAG_CHECKSUM )
DrawBarcode( page, 280, 1, "CODABAR", "40156", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( page, 300, 1, "CODABAR", "-1234", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( page, 320, 1, "CODE93", "ABC-123" )
DrawBarcode( page, 340, 1, "CODE93", "TEST93" )
DrawBarcode( page, 360, 1, "CODE11", "12", HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( page, 380, 1, "CODE11", "1234567890", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 )
DrawBarcode( page, 400, 1, "CODE128", "Code 128" )
DrawBarcode( page, 420, 1, "CODE128", "1234567890" )
DrawBarcode( page, 440, 1, "CODE128", "Wikipedia" )
DrawBarcode( page, 460, 1, "PDF417", "Hello, World of Harbour!!! It's 2D barcode PDF417 :)" )
DrawBarcode( page, 540, 1, "DATAMATRIX", "Hello, World of Harbour!!! It's 2D barcode DataMatrix :)" )
DrawBarcode( page, 580, 1, "QRCODE", "https://en.wikipedia.org/wiki/QR_Code" )
FErase( hb_FNameExtSet( __FILE__, ".pdf" ) )
? HPDF_SaveToFile( pdf, hb_FNameExtSet( __FILE__, ".pdf" ) )
RETURN
STATIC PROCEDURE DrawBarcode( page, nY, nLineWidth, cType, cCode, nFlags )
LOCAL hZebra, nLineHeight, cTxt
nY := HPDF_Page_GetHeight( page ) - nY
SWITCH cType
CASE "EAN13" ; hZebra := hb_zebra_create_ean13( cCode, nFlags ) ; EXIT
CASE "EAN8" ; hZebra := hb_zebra_create_ean8( cCode, nFlags ) ; EXIT
CASE "UPCA" ; hZebra := hb_zebra_create_upca( cCode, nFlags ) ; EXIT
CASE "UPCE" ; hZebra := hb_zebra_create_upce( cCode, nFlags ) ; EXIT
CASE "CODE39" ; hZebra := hb_zebra_create_code39( cCode, nFlags ) ; EXIT
CASE "ITF" ; hZebra := hb_zebra_create_itf( cCode, nFlags ) ; EXIT
CASE "MSI" ; hZebra := hb_zebra_create_msi( cCode, nFlags ) ; EXIT
CASE "CODABAR" ; hZebra := hb_zebra_create_codabar( cCode, nFlags ) ; EXIT
CASE "CODE93" ; hZebra := hb_zebra_create_code93( cCode, nFlags ) ; EXIT
CASE "CODE11" ; hZebra := hb_zebra_create_code11( cCode, nFlags ) ; EXIT
CASE "CODE128" ; hZebra := hb_zebra_create_code128( cCode, nFlags ) ; EXIT
CASE "PDF417" ; hZebra := hb_zebra_create_pdf417( cCode, nFlags ); nLineHeight := nLineWidth * 3 ; EXIT
CASE "DATAMATRIX" ; hZebra := hb_zebra_create_datamatrix( cCode, nFlags ); nLineHeight := nLineWidth ; EXIT
CASE "QRCODE" ; hZebra := hb_zebra_create_qrcode( cCode, nFlags ); nLineHeight := nLineWidth ; EXIT
ENDSWITCH
IF hZebra != NIL
IF hb_zebra_geterror( hZebra ) == 0
IF nLineHeight == NIL
nLineHeight := 16
ENDIF
HPDF_Page_BeginText( page )
HPDF_Page_TextOut( page, 40, nY - 13, cType )
cTxt := hb_zebra_getcode( hZebra )
IF Len( cTxt ) < 20
HPDF_Page_TextOut( page, 150, nY - 13, cTxt )
ENDIF
HPDF_Page_EndText( page )
hb_zebra_draw_hpdf( hZebra, page, 300, nY, nLineWidth, -nLineHeight )
ELSE
? "Type", cType, "Code", cCode, "Error", hb_zebra_geterror( hZebra )
ENDIF
hb_zebra_destroy( hZebra )
ELSE
? "Invalid barcode type", cType
ENDIF
RETURN
STATIC FUNCTION hb_zebra_draw_hpdf( hZebra, page, ... )
IF hb_zebra_geterror( hZebra ) != 0
RETURN HB_ZEBRA_ERROR_INVALIDZEBRA
ENDIF
hb_zebra_draw( hZebra, {| x, y, w, h | HPDF_Page_Rectangle( page, x, y, w, h ) }, ... )
HPDF_Page_Fill( page )
RETURN 0
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Problemas com Fonte de Codigo de Barras
Olá Itamar,
Olá Frazato,
Para imprimir códigos de barras com [x]Harbour, na minha opinião, não perca tempo. Estude a HbZebra. O exemplo postado pelo Itamar é um deles. E tenha em mente que você terá que pensar em pixels, e não Linha/Coluna. Esta é uma questão que (também na minha opinião) não é preocupação dos desenvolvedores, e com certeza pela baixa demanda. Isso fica por conta das contribs.
Com certeza sim. Mas fontes do Windows não funcionam em [x]Harbour para impressão de código de barras. Não adianta insistir.Itamar M. Lins Jr. escreveu:Essa fonte EAN13 que vc está usando é a mesma que usou no word ?
Olá Frazato,
Para imprimir códigos de barras com [x]Harbour, na minha opinião, não perca tempo. Estude a HbZebra. O exemplo postado pelo Itamar é um deles. E tenha em mente que você terá que pensar em pixels, e não Linha/Coluna. Esta é uma questão que (também na minha opinião) não é preocupação dos desenvolvedores, e com certeza pela baixa demanda. Isso fica por conta das contribs.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Problemas com Fonte de Codigo de Barras
Bom dia! muito obrigado pela resposta!
Tenho 2 duvidas?
1- E possivel compilar isso usando o xharbour?
2- Como compilo isso usando o harbour se nao consegui usar o xharbour?
Muito Obrigado, pela ajuda!
Frazato
Tenho 2 duvidas?
1- E possivel compilar isso usando o xharbour?
2- Como compilo isso usando o harbour se nao consegui usar o xharbour?
Muito Obrigado, pela ajuda!
Frazato
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Problemas com Fonte de Codigo de Barras
Olá Frazato,
Descompacte o exemplo abaixo numa pasta e compile usando:
Notas:
1 - Se for compilar com Harbour 3.0 precisa remover as chamadas para o QRCODE. QRCODE somente em Harbour 3.2 ou superior.
2 - Se você não tiver o Microsoft XPS Document Writer instalado, altere para a impressora padrão. Basta comentar as linhas do XPS Writer e descomentar as linhas da impressora padrão.
Da minha parte não sei dizer como usar a hbzebra em xHarbour. Sempre usei com Harbour.frazato escreveu:1- E possivel compilar isso usando o xharbour?
Descompacte o exemplo abaixo numa pasta e compile usando:
Código: Selecionar todos
Hbmk2 hbzebra -lhbzebra -lhbwin1 - Se for compilar com Harbour 3.0 precisa remover as chamadas para o QRCODE. QRCODE somente em Harbour 3.2 ou superior.
2 - Se você não tiver o Microsoft XPS Document Writer instalado, altere para a impressora padrão. Basta comentar as linhas do XPS Writer e descomentar as linhas da impressora padrão.
- Anexos
-
hbzebra.rar- (11.46 KiB) Baixado 657 vezes
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Problemas com Fonte de Codigo de Barras
Boa tarde! muito obrigado fiz o teste gerei o executável e imprimi agora o leitor le normal, agora tenho que ver ser funciona com o xharbour, caso não terei que procurar uma outra solução ou criar um executável somente para gerar as etiquetas, mais muito obrigado pela sua ajuda.
Frazato
Frazato
Problemas com Fonte de Codigo de Barras
:-O
Bom dia, Itamar tentei enxugar o código e imprimir em uma impressora diretamente um QRCODE e não consegui montar, quando não da erro não imprimi, você tem algum pequeno exemplo em HARBOUR bem direto, selecionando uma impressora e enviando a impressão ?
HASA
Bom dia, Itamar tentei enxugar o código e imprimir em uma impressora diretamente um QRCODE e não consegui montar, quando não da erro não imprimi, você tem algum pequeno exemplo em HARBOUR bem direto, selecionando uma impressora e enviando a impressão ?
HASA
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Problemas com Fonte de Codigo de Barras
Olá HASA,
Veja se o exemplo abaixo ajuda. Compilar usando:
Veja se o exemplo abaixo ajuda. Compilar usando:
Código: Selecionar todos
Hbmk2 qrcode -lhbzebra -lhbwin -lxhb- Anexos
-
qrcode.rar- (11.32 KiB) Baixado 607 vezes
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Problemas com Fonte de Codigo de Barras
Bom dia, Jairo realmente está mais enxuto mas... não consigo traduzir ainda para imprimir na Minigui com Preview, mais valeu.
:)Pos
HASA
Problemas com Fonte de Codigo de Barras
Caso interesse para alguém aqui tem um dica para imprimir com a MINIGUI http://www.hmgforum.com/viewtopic.php?f=6&t=3114#p28200
:xau
HASA
Problemas com Fonte de Codigo de Barras
Bom dia! Pegue parte código do Eolo para impressão de código de barras usando a fonte "BARRAS BIRO", que por sinal foi o unico que funciou usando as fontes, mais tenho um problema não consigo gerar o PDF usando o pdfcreator, o curioso é que foi a unica que deu problema para gerar o pdf, mais quando mando direto para a impressora funciona o e leitor também, se que existe algum problema com esta fonte( fiz o teste em maquinas diferentes Win7 e Win8).
Segue o parte do código que estou usando.!
Segue o parte do código que estou usando.!
Código: Selecionar todos
#define FORM_A4 9
#define PS_SOLID 0
#define RGB( nR,nG,nB ) ( nR + ( nG * 256 ) + ( nB * 256 * 256 ) )
#define BLACK RGB( 0x0 ,0x0 ,0x0 )
#define BLUE RGB( 0x0 ,0x0 ,0x85 )
#define GREEN RGB( 0x0 ,0x85,0x0 )
#define CYAN RGB( 0x0 ,0x85,0x85 )
#define RED RGB( 0x85,0x0 ,0x0 )
#define MAGENTA RGB( 0x85,0x0 ,0x85 )
#define BROWN RGB( 0x85,0x85,0x0 )
#define WHITE RGB( 0xC6,0xC6,0xC6 )
/****************************************
* Compilar: hbmk2 demo.prg -lhbwin
****************************************/
PROCEDURE Main()
LOCAL nPrn := 1
//LOCAL aPrn := WIN_PRINTERLIST()
lOCAL aPrn := GetPrinters() // Pega Impressoras
CLS
SETMODE(25,80)
IF Empty( aPrn )
Alert("Nenhuma impressora Instalada - Encerrando programa")
QUIT
ENDIF
DO WHILE nPrn != 0
CLS
@ 3, 0 SAY "Escolha a impressora"
@ 5, 9 TO MaxRow()-9, MaxCol()-9
nPrn := AChoice( 6, 10, MaxRow() - 10, MaxCol() - 10, aPrn, .T.,, nPrn )
IF nPrn != 0
PrnTest( aPrn[ nPrn ] )
ENDIF
exit
ENDDO
RETURN
*******************************************
Function PrnTest(cPrinterName)
*******************************************
local cTexto, nLinhas, nA, cLinha, oBMP
local oPrinter := win_prn():New(cPrinterName)
oPrinter:Landscape:= .F.
oPrinter:FormType:= 9
oprinter:SetPrintQuality(-1)
oPrinter:Copies:= 1
afontes:=oprinter:getfonts()
if !(ascan(afontes,{|aa| upper(aa[1])=="BARRAS BIRO"})>0) .and. ;
(ascan(afontes,{|bb| upper(bb[1])=="ARIAL ROUNDED MT BOLD"})>0)
oPrinter:destroy()
* mensagem = fonte ausente
Alert('falta fontes')
// retu
Endif
IF !oPrinter:Create()
alert("ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar se a Impressora esta Ligada.")
return NIL
else
IF !oPrinter:StartDoc("Codigo Barras")
alert("ATENÇÃO !!! Não foi possivel Iniciar a Impressão, Favor Verificar a Impressora")
Return NIL
endif
FOR TT=1 TO 2
oPrinter:newline()
NEXT
nLinha1 := 10//5
nColuna1:= 10//5
priv xxxxx:=alltrim('7898172866035')
if len(xxxxx)=13
xxxxx:=barraean13(xxxxx)
elseif len(xxxxx)=8
xxxxx:=barraean8(xxxxx)
else
xxxxx=padl(xxxxx,13,"0")
xxxxx:=barraean13(xxxxx)
endi
// número do código de barras
oPrinter:SetFont('Barras Biro',20,{3,7}, 400 )
// oPrinter:setColor(preto00)
alert(xxxxx)
oPrinter:TextOutat(100,200,xxxxx,.f.,.f.,.f.)
// nLinha1 := 10
// nColuna1 := 10
// oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1 ), xxxxx, "Barras Biro", 10, 0 )
//oPrinter:TextAtFont( oPrinter:MM_TO_POSX( nLinha1 ), oPrinter:MM_TO_POSY( nColuna1 ), xxxxx, "Courier New", 10, 0 )
MemoWrit('c:\temp\Barras.txt',xxxxx)
oPrinter:EndDoc()
oPrinter:Destroy()
ENDIF
RETURN NIL
function carrega_produtos()
local witens := {}
go top
do while ! eof()
for i:= 1 to quant_tag
Aadd(witens,{codigo,descricao,ean,Transf(preco_vend,'@EZ 9999.99')})
next
skip+1
enddo
return witens
***
*
* Barras EAN13
*
*
FUNCTION BarraEAN13( tcNumero )
LOCAL lnT, lcRetorno, lcSequencia
*LOCAL ARRAY laBarras(4, 10)
priv laBarras[4, 10]
lcRetorno = "FfF"
*-- Deve sempre ter 13 caracteres
IF LEN(tcNumero) <> 13
RETURN ""
ENDIF
*-- Tabela A
laBarras[1, 1] = "fffFFfF"
laBarras[1, 2] = "ffFFffF"
laBarras[1, 3] = "ffFffFF" && Corrigido em 20010228
laBarras[1, 4] = "fFFFFfF"
laBarras[1, 5] = "fFfffFF"
laBarras[1, 6] = "fFFfffF"
laBarras[1, 7] = "fFfFFFF"
laBarras[1, 8] = "fFFFfFF"
laBarras[1, 9] = "fFFfFFF"
laBarras[1, 10] = "fffFfFF"
*-- Tabela B
laBarras[2, 1] = "fFffFFF"
laBarras[2, 2] = "fFFffFF"
laBarras[2, 3] = "ffFFfFF"
laBarras[2, 4] = "fFffffF"
laBarras[2, 5] = "ffFFFfF"
laBarras[2, 6] = "fFFFffF"
laBarras[2, 7] = "ffffFfF"
laBarras[2, 8] = "ffFfffF"
laBarras[2, 9] = "fffFffF"
laBarras[2, 10] = "ffFfFFF"
*-- Tabela C
laBarras[3, 1] = "FFFffFf"
laBarras[3, 2] = "FFffFFf"
laBarras[3, 3] = "FFfFFff"
laBarras[3, 4] = "FffffFf"
laBarras[3, 5] = "FfFFFff"
laBarras[3, 6] = "FffFFFf"
laBarras[3, 7] = "FfFffff"
laBarras[3, 8] = "FfffFff"
laBarras[3, 9] = "FffFfff"
laBarras[3, 10] = "FFFfFff"
*-- Tabela para definir primeiro caracter
laBarras[4, 1] = "111111"
laBarras[4, 2] = "112122"
laBarras[4, 3] = "112212"
laBarras[4, 4] = "112221"
laBarras[4, 5] = "121122"
laBarras[4, 6] = "122112"
laBarras[4, 7] = "122211"
laBarras[4, 8] = "121212"
laBarras[4, 9] = "121221"
laBarras[4, 10] = "122121"
*-- Pega a sequencia de tabela a usar
lcSequencia = laBarras[4, VAL(SUBSTR(tcNumero, 1, 1)) + 1]
*-- Apura do 2' ao 7' caracter
FOR lnT = 2 TO 7
lcRetorno = lcRetorno +;
laBarras[VAL(SUBSTR(lcSequencia, lnT - 1, 1)),;
VAL(SUBSTR(tcNumero, lnT, 1)) + 1]
NEXT
*-- Coloca o meio
lcRetorno = lcRetorno + "fFfFf"
*-- Apura do 8' ao 13'
FOR lnT = 8 TO 13
lcRetorno = lcRetorno +;
laBarras[3, VAL(SUBSTR(tcNumero, lnT, 1)) + 1]
NEXT
*-- Acrescenta sequencia de finalizacao
lcRetorno = lcRetorno + "FfF"
RETURN lcRetorno
***
*
* Barras EAN8
*
*
FUNCTION BarraEAN8( tcNumero )
LOCAL lnT, lcRetorno
*LOCAL ARRAY laBarras(2, 10)
priv laBarras[2, 10]
lcRetorno = "FfF"
*-- Deve sempre ter 8 caracteres
IF LEN(tcNumero) <> 8
RETURN ""
ENDIF
*-- Tabela A
laBarras[1, 1] = "fffFFfF"
laBarras[1, 2] = "ffFFffF"
laBarras[1, 3] = "ffFffFF" && Corrigido em 20010228
laBarras[1, 4] = "fFFFFfF"
laBarras[1, 5] = "fFfffFF"
laBarras[1, 6] = "fFFfffF"
laBarras[1, 7] = "fFfFFFF"
laBarras[1, 8] = "fFFFfFF"
laBarras[1, 9] = "fFFfFFF"
laBarras[1, 10] = "fffFfFF"
*-- Tabela C
laBarras[2, 1] = "FFFffFf"
laBarras[2, 2] = "FFffFFf"
laBarras[2, 3] = "FFfFFff"
laBarras[2, 4] = "FffffFf"
laBarras[2, 5] = "FfFFFff"
laBarras[2, 6] = "FffFFFf"
laBarras[2, 7] = "FfFffff"
laBarras[2, 8] = "FfffFff"
laBarras[2, 9] = "FffFfff"
laBarras[2, 10] = "FFFfFff"
*-- Apura do 1' ao 4' caracter
FOR lnT = 1 TO 4
lcRetorno = lcRetorno +;
laBarras[1, VAL(SUBSTR(tcNumero, lnT, 1)) + 1]
NEXT
*-- Coloca o meio
lcRetorno = lcRetorno + "fFfFf"
*-- Apura do 5' ao 8'
FOR lnT = 5 TO 8
lcRetorno = lcRetorno +;
laBarras[2, VAL(SUBSTR(tcNumero, lnT, 1)) + 1]
NEXT
*-- Acrescenta sequencia de finalizacao
lcRetorno = lcRetorno + "FfF"
RETURN lcRetorno
