none
Código de barras Interleaved 2 of 5 Report Viewer RRS feed

  • Pergunta

  • Boa Tarde galera,

     

    fiz o esquema de gerar boleto pelo reportviewer utilizando a fonte Code 2/5 Interleaved (TrueType). O boleto gerou perfeito no ReportViewer, porém não consigo exportar de maneira alguma para PDF, nem pelo próprio ReportViewer e nem por uma impressora PDF. Para Word e Excel exporta normalmente, o que pode ser ???

     

    Aproveito e deixo abaixo um código que eu traduzi para VB.NET, ele gerou o código de barras, porém não consegui ler pelo Iphone, não sei se é o padrão do código de barras ou se é erro mesmo:

     

      Public Function clsCodigoBarra(ByVal strCodigo As String) As Bitmap


            Const intFino As Integer = 1
            Const intLargo As Integer = 3
            Const intAltura As Integer = 50



            Dim intLarguraFinal As Integer = 405
            Dim intAlturaFinal As Integer = 50
            Dim intAtual As Integer = 0
            Dim intI As Integer
            Dim intF As Integer
            Dim intF1 As Integer
            Dim intF2 As Integer
            Dim strF As String
            Dim strTexto As String

            Dim strCodigoBarra(100) As String

            Dim dimensaoFinal As Size = New Size(intLarguraFinal, intAlturaFinal)
            Dim oIMGFInal As Bitmap = New Bitmap(intLarguraFinal, intAlturaFinal, System.Drawing.Imaging.PixelFormat.Format32bppArgb)
            Dim oBPreto As SolidBrush = New SolidBrush(Color.Black)
            Dim oBBranco As SolidBrush = New SolidBrush(Color.White)
            Dim oGrap As Graphics = Graphics.FromImage(oIMGFInal)

            oGrap.FillRectangle(oBBranco, New Rectangle(0, 0, intLarguraFinal, intAlturaFinal))

            strCodigoBarra(0) = "00110"
            strCodigoBarra(1) = "10001"
            strCodigoBarra(2) = "01001"
            strCodigoBarra(3) = "11000"
            strCodigoBarra(4) = "00101"
            strCodigoBarra(5) = "10100"
            strCodigoBarra(6) = "01100"
            strCodigoBarra(7) = "00011"
            strCodigoBarra(8) = "10010"
            strCodigoBarra(9) = "01010"


            For intF1 = 9 To 0 Step -1
                For intF2 = 9 To 0 Step -1
                    intF = intF1 * 10 + intF2
                    strTexto = ""
                    For intCont = 0 To 4
                        strTexto += strCodigoBarra(intF1).Substring(intCont, 1) + strCodigoBarra(intF2).Substring(intCont, 1)
                    Next
                    strCodigoBarra(intF) = strTexto
                Next
            Next

            oGrap.FillRectangle(oBPreto, New Rectangle(0, 0, intFino, intAltura))
            intAtual += intFino
            oGrap.FillRectangle(oBBranco, New Rectangle(intAtual, 0, intFino, intAltura))
            intAtual += intFino
            oGrap.FillRectangle(oBPreto, New Rectangle(intAtual, 0, intFino, intAltura))
            intAtual += intFino
            oGrap.FillRectangle(oBBranco, New Rectangle(intAtual, 0, intFino, intAltura))
            intAtual += intFino

            strTexto = strCodigo

            If (strTexto.Length Mod 2) <> 0 Then
                strTexto = "0" + strTexto
            End If

            While strTexto.Length > 0

                intI = Convert.ToInt32(strTexto.Substring(0, 2))
                strTexto = InverteString(InverteString(strTexto).Substring(0, strTexto.Length - 2))
                strF = strCodigoBarra(intI)

                Dim intCont As Integer = 0

                While intCont <= 9


                    If (strF.ToString().Substring(intCont, 1) = "0") Then
                        intF1 = intFino
                    Else
                        intF1 = intLargo
                        oGrap.FillRectangle(oBPreto, New Rectangle(intAtual, 0, intF1, intAltura))
                        intAtual += intF1
                    End If

                    If (strF.ToString().Substring(intCont + 1, 1) = "0") Then
                        intF2 = intFino
                    Else
                        intF2 = intLargo
                        oGrap.FillRectangle(oBBranco, New Rectangle(intF2, 0, intFino, intAltura))
                        intAtual += intF2
                    End If

                    intCont = intCont + 2
                End While
            End While



            oGrap.FillRectangle(oBPreto, New Rectangle(intAtual, 0, intLargo, intAltura))
            intAtual += intLargo
            oGrap.FillRectangle(oBBranco, New Rectangle(intAtual, 0, intFino, intAltura))
            intAtual += intFino
            oGrap.FillRectangle(oBPreto, New Rectangle(intAtual, 0, 1, intAltura))
            intAtual += 1

            pbBoleto.Image = oIMGFInal

            Return oIMGFInal
        End Function


    GuAt !!!
    segunda-feira, 21 de fevereiro de 2011 18:33