none
Imprimir codigo de barras

Respostas

  • Trabalhando com boleto bancário do unibanco tive dificuldades em imprimir o boleto no formato de carnê, então fiz essa solução de código de barras abaixo como parte da solução para o carnê, só funciona com números devido a minha necessidade ter sido só para dígitos numéricos mesmo. Esse é o código de uma página que é chamada dentro de tags <img>.

    Ex.: <img src="imgBarras.aspx?CODIGO=123456123456123456">

     

    código:

     

    Imports System.Drawing

    Imports System.Drawing.Drawing2D

    Partial Class imgBarras

    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    GeraBARRA(Request("CODIGO"))

    End Sub

    Private Sub GeraBARRA(ByVal codigo As String)

    Dim LarguraFinal, AlturaFinal As Double

    Dim dimensaoFinal As Size

    Dim oIMG As Drawing.Image

    Dim oIMGFinal As Drawing.Image

    LarguraFinal = 405

    AlturaFinal = 50

    Dim oBPreto As New SolidBrush(Color.Black)

    Dim oBBranco As New SolidBrush(Color.White)

    dimensaoFinal = New Size(LarguraFinal, AlturaFinal)

    oIMGFinal = New Bitmap(LarguraFinal, AlturaFinal, oIMG.PixelFormat.Format32bppArgb)

     

    Dim oGrap As Graphics = Graphics.FromImage(oIMGFinal)

     

    oGrap.FillRectangle(oBBranco, New Rectangle(0, 0, LarguraFinal, AlturaFinal))

     

    Dim ATUAL As Double = 0

    Dim F, F1, F2, i, Texto

    Dim arrCodigoBarra(99)

    Dim htmlCodigoBarra

    htmlCodigoBarra = ""

    Const Fino = 1

    Const Largo = 3

    Const Altura = 50

    If IsDBNull(arrCodigoBarra(0)) OrElse Not IsNumeric(arrCodigoBarra(0)) Then

    arrCodigoBarra(0) = "00110"

    arrCodigoBarra(1) = "10001"

    arrCodigoBarra(2) = "01001"

    arrCodigoBarra(3) = "11000"

    arrCodigoBarra(4) = "00101"

    arrCodigoBarra(5) = "10100"

    arrCodigoBarra(6) = "01100"

    arrCodigoBarra(7) = "00011"

    arrCodigoBarra(8) = "10010"

    arrCodigoBarra(9) = "01010"

    For F1 = 9 To 0 Step -1

    For F2 = 9 To 0 Step -1

    F = F1 * 10 + F2

    Texto = ""

    For i = 1 To 5

    Texto = Texto & Mid(arrCodigoBarra(F1), i, 1) + Mid(arrCodigoBarra(F2), i, 1)

    Next

    arrCodigoBarra(F) = Texto

    Next

    Next

    End If

    oGrap.FillRectangle(oBPreto, New Rectangle(0, 0, Fino, Altura))

    ATUAL += Fino

    oGrap.FillRectangle(oBBranco, New Rectangle(ATUAL, 0, Fino, Altura))

    ATUAL += Fino

    oGrap.FillRectangle(oBPreto, New Rectangle(ATUAL, 0, Fino, Altura))

    ATUAL += Fino

    oGrap.FillRectangle(oBBranco, New Rectangle(ATUAL, 0, Fino, Altura))

    ATUAL += Fino

    Texto = codigo

    If Len(Texto) Mod 2 <> 0 Then

    Texto = "0" & Texto

    End If

    Do While Len(Texto) > 0

    i = CInt(Left(Texto, 2))

    Texto = Right(Texto, Len(Texto) - 2)

    F = arrCodigoBarra(i)

    For i = 1 To 10 Step 2

    If Mid(F, i, 1) = "0" Then

    F1 = Fino

    Else

    F1 = Largo

    End If

    oGrap.FillRectangle(oBPreto, New Rectangle(ATUAL, 0, F1, Altura))

    ATUAL += F1

    If Mid(F, i + 1, 1) = "0" Then

    F2 = Fino

    Else

    F2 = Largo

    End If

    oGrap.FillRectangle(oBBranco, New Rectangle(F2, 0, Fino, Altura))

    ATUAL += F2

    Next

    Loop

    oGrap.FillRectangle(oBPreto, New Rectangle(ATUAL, 0, Largo, Altura))

    ATUAL += Largo

    oGrap.FillRectangle(oBBranco, New Rectangle(ATUAL, 0, Fino, Altura))

    ATUAL += Fino

    oGrap.FillRectangle(oBPreto, New Rectangle(ATUAL, 0, 1, Altura))

    ATUAL += 1

     

    oIMGFinal.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)

    oIMGFinal.Dispose()

    End Sub

    End Class

     

    terça-feira, 6 de novembro de 2007 23:25